mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-07-28 05:14:54 +02:00
69 lines
1.8 KiB
JavaScript
69 lines
1.8 KiB
JavaScript
const fs = require("fs");
|
|
const path = require("path");
|
|
|
|
const packageRoot = path.join(
|
|
__dirname,
|
|
"..",
|
|
"node_modules",
|
|
"guacamole-common-js",
|
|
);
|
|
|
|
const bundlePaths = [
|
|
path.join(packageRoot, "dist", "esm", "guacamole-common.js"),
|
|
path.join(packageRoot, "dist", "cjs", "guacamole-common.js"),
|
|
];
|
|
|
|
const oldFlushBlock =
|
|
" if (window.requestAnimationFrame && document.hasFocus())\n" +
|
|
" asyncFlush();\n" +
|
|
" else\n" +
|
|
" syncFlush();";
|
|
|
|
const newFlushBlock =
|
|
" // Electron can throttle or skip requestAnimationFrame() for inactive\n" +
|
|
" // windows/tabs even while guacd is still sending display frames. Flush\n" +
|
|
" // synchronously so Guacamole connections do not stall while waiting for\n" +
|
|
" // a frame callback that may never run.\n" +
|
|
" syncFlush();";
|
|
|
|
let patched = false;
|
|
let foundBundle = false;
|
|
|
|
for (const bundlePath of bundlePaths) {
|
|
if (!fs.existsSync(bundlePath)) {
|
|
console.log(
|
|
`[patch-guacamole-common-js] ${bundlePath} not found, skipping`,
|
|
);
|
|
continue;
|
|
}
|
|
|
|
foundBundle = true;
|
|
let content = fs.readFileSync(bundlePath, "utf8");
|
|
if (content.includes(newFlushBlock)) continue;
|
|
|
|
if (!content.includes(oldFlushBlock)) {
|
|
console.log(
|
|
`[patch-guacamole-common-js] Flush target not found in ${bundlePath}, skipping`,
|
|
);
|
|
continue;
|
|
}
|
|
|
|
content = content.replace(oldFlushBlock, newFlushBlock);
|
|
fs.writeFileSync(bundlePath, content);
|
|
patched = true;
|
|
}
|
|
|
|
if (!foundBundle) {
|
|
console.log("[patch-guacamole-common-js] File not found, skipping");
|
|
process.exit(0);
|
|
}
|
|
|
|
if (!patched) {
|
|
console.log("[patch-guacamole-common-js] Already patched");
|
|
process.exit(0);
|
|
}
|
|
|
|
console.log(
|
|
"[patch-guacamole-common-js] Patched display flush to avoid Electron requestAnimationFrame stalls",
|
|
);
|