Skip to content

Commit

Permalink
fix: Properly close adb and rclone on exit
Browse files Browse the repository at this point in the history
fix: Properly close `adb` and `rclone` on exit

Fixes VRPirates#34

Cleanly closes `adb` and `rclone` connections when the application exits, ensuring resources are freed and preventing potential issues. This addresses a previous oversight where these connections weren't properly closed, potentially leading to resource leaks or unexpected behavior.

Even though we free up the adb connection we don't close the server because other programs may be using the connection.
  • Loading branch information
MikeRatcliffe committed Sep 17, 2024
1 parent 5bc1806 commit d005071
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 4 deletions.
5 changes: 5 additions & 0 deletions main.js
Original file line number Diff line number Diff line change
Expand Up @@ -545,6 +545,11 @@ async function startApp() {
app.quit();
}
});

app.on("will-quit", async () => {
console.log("will-quit");
await tools.destroy();
});
}

startApp();
23 changes: 19 additions & 4 deletions tools.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ const l = 32;
const configLocationOld = path.join(global.homedir, "sidenoder-config.json");
const configLocation = path.join(global.sidenoderHome, "config.json");

let agentOculus, agentSteam, agentSQ;
let agentOculus, agentSteam, agentSQ, tracker;

init();

Expand Down Expand Up @@ -62,6 +62,7 @@ module.exports = {
trackDevices,
checkDeps,
checkMount,
destroy,
mount,
killRClone,
getDir,
Expand Down Expand Up @@ -952,7 +953,7 @@ async function trackDevices() {
await getDeviceSync();

try {
const tracker = await adb.trackDevices();
tracker = await adb.trackDevices();
tracker.on("add", async (device) => {
console.log("Device was plugged in", device.id);
// await getDeviceSync();
Expand All @@ -971,14 +972,24 @@ async function trackDevices() {

tracker.on("end", () => {
console.error("Tracking stopped");
trackDevices();
});
} catch (err) {
console.error("Something went wrong:", err.stack);
returnError(err);
}
}

async function destroy() {
try {
await killRClone();
} catch (err) {
console.log("rclone not started");
}

tracker.end();
tracker = null;
}

async function appInfo(args) {
const { res, pkg } = args;
const app = KMETAS[pkg];
Expand Down Expand Up @@ -1577,7 +1588,7 @@ async function killRClone() {
platform === "win"
? `taskkill.exe /F /T /IM rclone.exe`
: `killall -9 rclone`;
console.log("try kill rclone");
console.log("killing rclone");
return new Promise((res, rej) => {
exec(killCmd, (error, stdout, stderr) => {
if (error) {
Expand Down Expand Up @@ -1714,6 +1725,10 @@ async function mount() {
`"${rcloneCmd}" ${mountCmd} --read-only --rc --rc-no-auth --config="${global.currentConfiguration.rcloneConf}" ${global.currentConfiguration.cfgSection}: "${global.mountFolder}"`,
(error, stdout, stderr) => {
if (error) {
if (!tracker) {
// Window is closing
return;
}
console.error("rclone error:", error);
if (RCLONE_ID !== myId) {
error = false;
Expand Down

0 comments on commit d005071

Please sign in to comment.