feat: use psList on windows (~25ms vs ~320ms)

This commit is contained in:
Zamitto 2024-04-23 21:10:15 -03:00 committed by Zamitto
parent 46a099118e
commit 1822724df2
3 changed files with 10 additions and 16 deletions

View File

@ -1,12 +1,5 @@
import psList from "ps-list"; import psList from "ps-list";
import { tasklist } from "tasklist";
export const getProcesses = async () => { export const getProcesses = async () => {
if (process.platform === "win32") {
return tasklist().then((tasks) =>
tasks.map((task) => ({ ...task, name: task.imageName }))
);
}
return psList(); return psList();
}; };

View File

@ -1,7 +1,7 @@
import path from "node:path"; import path from "node:path";
import { IsNull, Not } from "typeorm"; import { IsNull, Not } from "typeorm";
import { exec } from "child_process"
import { gameRepository } from "@main/repository"; import { gameRepository } from "@main/repository";
import { getProcesses } from "@main/helpers"; import { getProcesses } from "@main/helpers";
import { WindowManager } from "./window-manager"; import { WindowManager } from "./window-manager";
@ -14,13 +14,21 @@ export const startProcessWatcher = async () => {
// eslint-disable-next-line no-constant-condition // eslint-disable-next-line no-constant-condition
while (true) { while (true) {
await sleep(sleepTime);
const games = await gameRepository.find({ const games = await gameRepository.find({
where: { where: {
executablePath: Not(IsNull()), executablePath: Not(IsNull()),
}, },
}); });
if (games.length == 0) {
continue;
}
console.time("getProcesses")
const processes = await getProcesses(); const processes = await getProcesses();
console.timeEnd("getProcesses")
for (const game of games) { for (const game of games) {
const gameProcess = processes.find((runningProcess) => { const gameProcess = processes.find((runningProcess) => {
@ -55,15 +63,10 @@ export const startProcessWatcher = async () => {
gameRepository.update(game.id, { gameRepository.update(game.id, {
lastTimePlayed: new Date().toUTCString(), lastTimePlayed: new Date().toUTCString(),
}); });
gamesPlaytime.set(game.id, performance.now());
await sleep(sleepTime);
continue;
} }
gamesPlaytime.set(game.id, performance.now()); gamesPlaytime.set(game.id, performance.now());
await sleep(sleepTime);
continue; continue;
} }
@ -73,8 +76,6 @@ export const startProcessWatcher = async () => {
WindowManager.mainWindow.webContents.send("on-game-close", game.id); WindowManager.mainWindow.webContents.send("on-game-close", game.id);
} }
} }
await sleep(sleepTime);
} }
} }
}; };

View File

@ -8866,7 +8866,7 @@ proxy-from-env@^1.1.0:
ps-list@^8.1.1: ps-list@^8.1.1:
version "8.1.1" version "8.1.1"
resolved "https://registry.npmjs.org/ps-list/-/ps-list-8.1.1.tgz" resolved "https://registry.yarnpkg.com/ps-list/-/ps-list-8.1.1.tgz#9ff1952b26a9a07fcc05270407e60544237ae581"
integrity sha512-OPS9kEJYVmiO48u/B9qneqhkMvgCxT+Tm28VCEJpheTpl8cJ0ffZRRNgS5mrQRTrX5yRTpaJ+hRDeefXYmmorQ== integrity sha512-OPS9kEJYVmiO48u/B9qneqhkMvgCxT+Tm28VCEJpheTpl8cJ0ffZRRNgS5mrQRTrX5yRTpaJ+hRDeefXYmmorQ==
psl@^1.1.33: psl@^1.1.33: