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