fix: Browser not getting closed on manual exit
This commit is contained in:
parent
90f9221a80
commit
489124a4a3
2 changed files with 17 additions and 17 deletions
|
|
@ -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);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
// });
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue