Remove the RDP-specific hardware acceleration shutdown that forced Chromium renderers into software compositing on Windows Server sessions. Add a production-wide startup invariant and a hidden full-width Electron compositor regression covering renderer switches, viewport geometry, and both painted edges.
42 lines
1.2 KiB
JavaScript
42 lines
1.2 KiB
JavaScript
function resolveStartupLanguage(config) {
|
|
return config && config.globalSettings && config.globalSettings.language === 'de' ? 'de' : 'en';
|
|
}
|
|
|
|
function createStartupQuery(config, version) {
|
|
const normalizedVersion = /^\d+\.\d+\.\d+$/.test(String(version || '').trim()) ? String(version).trim() : '';
|
|
return { language: resolveStartupLanguage(config), version: normalizedVersion };
|
|
}
|
|
|
|
function createStartupWindow(BrowserWindow, options) {
|
|
const window = new BrowserWindow({ ...options, show: false });
|
|
let nativePaintReady = false;
|
|
let rendererLoadFinished = false;
|
|
let revealed = false;
|
|
const reveal = () => {
|
|
if (revealed || !nativePaintReady || !rendererLoadFinished) return;
|
|
revealed = true;
|
|
window.show();
|
|
};
|
|
window.once('ready-to-show', () => {
|
|
nativePaintReady = true;
|
|
reveal();
|
|
});
|
|
window.webContents.once('did-finish-load', () => {
|
|
rendererLoadFinished = true;
|
|
reveal();
|
|
});
|
|
|
|
return {
|
|
window,
|
|
load(target, onLoadError, options) {
|
|
return window.loadFile(target, options).catch((error) => {
|
|
rendererLoadFinished = true;
|
|
reveal();
|
|
return onLoadError(error);
|
|
});
|
|
}
|
|
};
|
|
}
|
|
|
|
module.exports = { createStartupWindow, resolveStartupLanguage, createStartupQuery };
|