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

View file

@ -172,17 +172,10 @@ export async function killBrowser (browser: Subprocess)
{ {
if (os.platform() === 'linux') if (os.platform() === 'linux')
{ {
// kill chrome by your unique identifier // we have to force kill the demon spawn for some reason, doesn't respond to SIGTERM
await $`pkill -KILL -P ${browser.pid}`.quiet().nothrow(); await $`pkill -SIGKILL -P ${browser.pid}`.nothrow();
} else } 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
// });