fix: Browser not getting closed on manual exit

This commit is contained in:
Simeon Radivoev 2026-03-15 16:38:01 +02:00
parent 90f9221a80
commit 489124a4a3
Signed by: simeonradivoev
GPG key ID: C16C2132A7660C8E
2 changed files with 17 additions and 17 deletions

View file

@ -41,9 +41,20 @@ async function runWebview (events: EventEmitter, params: BrowserParams)
return new Promise((resolve, reject) =>
{
const handleExit = () =>
{
resolve(true);
console.log("Terminating Webview Worker");
webviewWorker.terminate();
};
webviewWorker.addEventListener('error', e =>
{
console.error(e.message);
events.removeListener('exitapp', handleExit);
// error doesn't termiate the worker, make sure it's unalived
webviewWorker.terminate();
reject(e.error);
});
@ -56,12 +67,7 @@ async function runWebview (events: EventEmitter, params: BrowserParams)
}
});
events.on('exitapp', () =>
{
resolve(true);
console.log("Terminating Webview Worker");
webviewWorker.terminate();
});
events.on('exitapp', handleExit);
});
}
@ -94,6 +100,7 @@ async function runBrowser (events: EventEmitter, params: BrowserParams)
{
events.on('exitapp', () =>
{
console.log("Killing Browser");
killBrowser(browser);
resolve(true);
});

View file

@ -172,17 +172,10 @@ export async function killBrowser (browser: Subprocess)
{
if (os.platform() === 'linux')
{
// kill chrome by your unique identifier
await $`pkill -KILL -P ${browser.pid}`.quiet().nothrow();
// we have to force kill the demon spawn for some reason, doesn't respond to SIGTERM
await $`pkill -SIGKILL -P ${browser.pid}`.nothrow();
} else
{
browser?.kill(15);
browser?.kill('SIGTERM');
}
}
// --- Test Run ---
// spawnBrowser({
// browser: "chrome",
// args: ["--window-size=1024,640", "--force-device-scale-factor=1.25"],
// detached: true
// });