Merge pull request #1962 from MartinFournier/feature/exit-process

Attempt to fix processes that stay up after closing app
This commit is contained in:
hydroflame 2021-12-17 11:50:03 -05:00 committed by Olivier Gagnon
commit c6843b231a
2 changed files with 35 additions and 10 deletions

@ -7,11 +7,12 @@ if (greenworks.init()) {
console.log("Steam API has failed to initialize."); console.log("Steam API has failed to initialize.");
} }
console.log(greenworks.shutdown);
const debug = false; const debug = false;
let win = null;
function createWindow(killall) { function createWindow(killall) {
win = new BrowserWindow({ const win = new BrowserWindow({
show: false, show: false,
backgroundThrottling: false, backgroundThrottling: false,
}); });
@ -46,6 +47,7 @@ function createWindow(killall) {
greenworks.activateAchievement(ach, () => undefined); greenworks.activateAchievement(ach, () => undefined);
} }
}, 1000); }, 1000);
win.achievementsIntervalID = intervalID;
// Create the Application's main menu // Create the Application's main menu
Menu.setApplicationMenu( Menu.setApplicationMenu(
@ -75,10 +77,11 @@ function createWindow(killall) {
{ {
label: "reload & kill all scripts", label: "reload & kill all scripts",
click: () => { click: () => {
setStopProcessHandler(app, win, false);
if (intervalID) clearInterval(intervalID); if (intervalID) clearInterval(intervalID);
createWindow(true);
win.webContents.forcefullyCrashRenderer(); win.webContents.forcefullyCrashRenderer();
win.close(); win.close();
createWindow(true);
}, },
}, },
], ],
@ -110,13 +113,35 @@ function createWindow(killall) {
}, },
]), ]),
); );
return win;
}
function setStopProcessHandler(app, window, enabled) {
const clearWindowHandler = () => {
if (window.achievementsIntervalID) {
clearInterval(window.achievementsIntervalID);
}
window = null;
};
const stopProcessHandler = () => {
if (process.platform !== "darwin") {
app.quit();
process.exit(0);
}
};
if (enabled) {
window.on("closed", clearWindowHandler);
app.on("window-all-closed", stopProcessHandler);
} else {
window.removeListener("closed", clearWindowHandler);
app.removeListener("window-all-closed", stopProcessHandler);
}
} }
app.whenReady().then(() => { app.whenReady().then(() => {
createWindow(process.argv.includes("--no-scripts")); const win = createWindow(false);
}); setStopProcessHandler(app, win, true);
app.once("window-all-closed", app.quit);
app.once("before-quit", () => {
win.removeAllListeners("close");
}); });

File diff suppressed because one or more lines are too long