ELECTRON-261: add logic to get gpu related flags from config file

This commit is contained in:
Vishwas Shashidhar 2018-01-25 22:59:25 +05:30
parent 7f0f5f8449
commit d3b95f70e9
2 changed files with 32 additions and 18 deletions

View File

@ -16,6 +16,9 @@
},
"customFlags": {
"authServerWhitelist": "",
"authNegotiateDelegateWhitelist": ""
"authNegotiateDelegateWhitelist": "",
"disableGpu": false,
"disableGpuCompositing": false,
"disableD3d11": false
}
}
}

View File

@ -25,11 +25,6 @@ require('electron-dl')();
// ELECTRON-261: On Windows, due to gpu issues, we need to disable gpu
// to ensure screen sharing works effectively with multiple monitors
// https://github.com/electron/electron/issues/4380
if (isWindowsOS) {
app.commandLine.appendSwitch("disable-gpu", true);
app.commandLine.appendSwitch("disable-gpu-compositing", true);
app.commandLine.appendSwitch("disable-d3d11", true);
}
//setting the env path child_process issue https://github.com/electron/electron/issues/7688
shellPath()
@ -118,29 +113,45 @@ if (isMac) {
* Sets chrome authentication flags in electron
*/
function setChromeFlags() {
log.send(logLevels.INFO, 'checking if we need to set custom chrome flags!');
// Read the config parameters synchronously
let config = readConfigFileSync();
// If we cannot find any config, just skip setting any flags
if (config && config !== null && config.customFlags) {
log.send(logLevels.INFO, 'Chrome flags config found!');
// If we cannot find the authServerWhitelist config, move on
if (config.customFlags.authServerWhitelist && config.customFlags.authServerWhitelist !== "") {
log.send(logLevels.INFO, 'Setting auth server whitelist flag');
app.commandLine.appendSwitch('auth-server-whitelist', config.customFlags.authServerWhitelist);
}
// If we cannot find the authNegotiateDelegateWhitelist config, move on
if (config.customFlags.authNegotiateDelegateWhitelist && config.customFlags.authNegotiateDelegateWhitelist !== "") {
log.send(logLevels.INFO, 'Setting auth negotiate delegate whitelist flag');
app.commandLine.appendSwitch('auth-negotiate-delegate-whitelist', config.customFlags.authNegotiateDelegateWhitelist);
}
// ELECTRON-261: Windows 10 Screensharing issues. We set chrome flags
// to disable gpu which fixes the black screen issue observed on
// multiple monitors
if (config.customFlags.disableGpu) {
log.send(logLevels.INFO, 'Setting disable gpu flag');
app.commandLine.appendSwitch("disable-gpu", true);
}
if (config.customFlags.disableGpuCompositing) {
log.send(logLevels.INFO, 'Setting disable gpu compositing flag');
app.commandLine.appendSwitch("disable-gpu-compositing", true);
}
if (config.customFlags.disableD3d11) {
log.send(logLevels.INFO, 'Setting disable d3d11 flag');
app.commandLine.appendSwitch("disable-d3d11", true);
}
}
}
@ -221,7 +232,7 @@ function setupThenOpenMainWindow() {
let hasInstallFlag = getCmdLineArg(process.argv, '--install', true);
let perUserInstall = getCmdLineArg(process.argv, '--peruser', true);
let customDataArg = getCmdLineArg(process.argv, '--userDataPath=', false);
if (customDataArg && customDataArg.split('=').length > 1) {
let customDataFolder = customDataArg.split('=')[1];
app.setPath('userData', customDataFolder);
@ -352,4 +363,4 @@ function handleProtocolAction(uri) {
// app is already open, so, just trigger the protocol action method
protocolHandler.processProtocolAction(uri);
}
}
}