system: fix directory monitor

Keep ref to monitor so it doesn't get garbage collected
This commit is contained in:
2 * r + 2 * t 2025-03-29 19:20:33 +11:00
parent 977a59afb3
commit abcf099f87
2 changed files with 6 additions and 2 deletions

View file

@ -32,7 +32,6 @@ export default class Schemes extends GObject.Object {
}
readonly #schemeDir: string = `${DATA}/scripts/data/schemes`;
readonly #monitor;
#map: { [k: string]: Scheme } = {};
@ -106,7 +105,7 @@ export default class Schemes extends GObject.Object {
super();
this.update().catch(console.error);
this.#monitor = monitorDirectory(this.#schemeDir, (_m, file, _f, type) => {
monitorDirectory(this.#schemeDir, (_m, file, _f, type) => {
if (type !== Gio.FileMonitorEvent.DELETED) this.updateFile(file).catch(console.error);
});
}

View file

@ -76,6 +76,7 @@ export const bindCurrentTime = (
return bind(time);
};
const monitors = new Set();
export const monitorDirectory = (
path: string,
callback: (
@ -102,5 +103,9 @@ export const monitorDirectory = (
}
}
// Keep ref to monitor so it doesn't get GCed
monitors.add(monitor);
monitor.connect("notify::cancelled", () => monitor.cancelled && monitors.delete(monitor));
return monitor;
};