diff --git a/installer/win/Symphony-x64.aip b/installer/win/Symphony-x64.aip index 1ef1884d..0ed65986 100644 --- a/installer/win/Symphony-x64.aip +++ b/installer/win/Symphony-x64.aip @@ -107,52 +107,18 @@ + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -163,17 +129,14 @@ - - + - - - + @@ -183,65 +146,30 @@ - + - + - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - @@ -254,8 +182,7 @@ - - + @@ -285,19 +212,20 @@ - - + - + + + @@ -308,13 +236,9 @@ - - - - diff --git a/installer/win/Symphony-x86.aip b/installer/win/Symphony-x86.aip index b98808bc..98aadb53 100644 --- a/installer/win/Symphony-x86.aip +++ b/installer/win/Symphony-x86.aip @@ -106,52 +106,18 @@ + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -162,16 +128,13 @@ - - + - - - + @@ -180,66 +143,31 @@ - + - + - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - @@ -252,8 +180,7 @@ - - + @@ -283,19 +210,20 @@ - - + - + + + @@ -306,13 +234,9 @@ - - - - diff --git a/js/main.js b/js/main.js index 34efca59..e6a9a1e2 100644 --- a/js/main.js +++ b/js/main.js @@ -73,25 +73,30 @@ function initializeCrashReporter(podUrl) { } -// only allow a single instance of app. -const shouldQuit = app.makeSingleInstance((argv) => { - // Someone tried to run a second instance, we should focus our window. - let mainWin = windowMgr.getMainWindow(); - if (mainWin) { - isAppAlreadyOpen = true; - if (mainWin.isMinimized()) { - mainWin.restore(); - } - mainWin.focus(); - } - processProtocolAction(argv); -}); - let allowMultiInstance = getCmdLineArg(process.argv, '--multiInstance', true) || isDevEnv; -// quit if another instance is already running, ignore for dev env or if app was started with multiInstance flag -if (!allowMultiInstance && shouldQuit) { - app.quit(); +if (!allowMultiInstance) { + const gotTheLock = app.requestSingleInstanceLock(); + + // quit if another instance is already running, ignore for dev env or if app was started with multiInstance flag + if (!gotTheLock) { + app.quit() + } else { + app.on('second-instance', (event, argv) => { + // Someone tried to run a second instance, we should focus our window. + let mainWin = windowMgr.getMainWindow(); + if (mainWin) { + isAppAlreadyOpen = true; + if (mainWin.isMinimized()) { + mainWin.restore(); + } + mainWin.focus(); + } + processProtocolAction(argv); + }); + } +} else { + app.releaseSingleInstanceLock(); } /** diff --git a/js/mainApiMgr.js b/js/mainApiMgr.js index b5811846..bd71c601 100644 --- a/js/mainApiMgr.js +++ b/js/mainApiMgr.js @@ -152,11 +152,9 @@ electron.ipcMain.on(apiName, (event, arg) => { break; } case apiCmds.optimizeMemoryConsumption: - if (typeof arg.memory === 'object' - && typeof arg.memory.workingSetSize === 'number' - && typeof arg.activeRequests === 'number') { - log.send(logLevels.INFO, 'Received memory info from renderer'); - setPreloadMemoryInfo(arg.memory, arg.activeRequests); + if (typeof arg.activeRequests === 'number') { + log.send(logLevels.INFO, 'Received active network request from renderer processes'); + setPreloadMemoryInfo(arg.activeRequests); } break; case apiCmds.optimizeMemoryRegister: diff --git a/js/memoryMonitor.js b/js/memoryMonitor.js index 878e5c44..1dd49697 100644 --- a/js/memoryMonitor.js +++ b/js/memoryMonitor.js @@ -1,5 +1,5 @@ 'use strict'; - +const { app } = require('electron'); const systemIdleTime = require('@paulcbetts/system-idle-time'); const log = require('./log.js'); @@ -7,7 +7,6 @@ const logLevels = require('./enums/logLevels.js'); const { getMainWindow, setIsAutoReload, getIsOnline } = require('./windowMgr'); const { getConfigField } = require('./config'); -const maxMemory = 800; const memoryRefreshThreshold = 60 * 60 * 1000; const maxIdleTime = 4 * 60 * 60 * 1000; const memoryRefreshInterval = 60 * 60 * 1000; @@ -25,13 +24,8 @@ setInterval(gatherMemory, 1000 * 60); * Gathers system memory and logs it to the remote system */ function gatherMemory() { - let memory = process.getProcessMemoryInfo(); - let details = - 'workingSetSize: ' + memory.workingSetSize + - ' peakWorkingSetSize: ' + memory.peakWorkingSetSize + - ' privatesBytes: ' + memory.privatesBytes + - ' sharedBytes: ' + memory.sharedBytes; - log.send(logLevels.INFO, details); + let appMetrics = app.getAppMetrics(); + log.send(logLevels.INFO, appMetrics); } /** @@ -41,17 +35,15 @@ function gatherMemory() { */ function optimizeMemory() { - if (!preloadMemory || !preloadMemory.memoryInfo || !preloadMemory.cpuUsage) { - log.send(logLevels.INFO, `Memory info not available`); + if (!preloadMemory.cpuUsage) { + log.send(logLevels.INFO, `cpu usage not available`); return; } - const memoryConsumed = (preloadMemory.memoryInfo && preloadMemory.memoryInfo.workingSetSize / 1024) || 0; const cpuUsagePercentage = preloadMemory.cpuUsage.percentCPUUsage; const activeNetworkRequest = preloadMemory.activeRequests === 0; - if (memoryConsumed > maxMemory - && cpuUsagePercentage <= cpuUsageThreshold + if (cpuUsagePercentage <= cpuUsageThreshold && !isInMeeting && getIsOnline() && canReload @@ -66,7 +58,7 @@ function optimizeMemory() { if (mainWindow && !mainWindow.isDestroyed()) { setIsAutoReload(true); log.send(logLevels.INFO, `Reloading the app to optimize memory usage as - memory consumption was ${memoryConsumed} + memory consumption is no longer detectable CPU usage percentage was ${preloadMemory.cpuUsage.percentCPUUsage} user was in a meeting? ${isInMeeting} pending network request on the client was ${preloadMemory.activeRequests} @@ -86,7 +78,7 @@ function optimizeMemory() { } else { log.send(logLevels.INFO, `Not Reloading the app as application was refreshed less than a hour ago? ${canReload ? 'no' : 'yes'} - memory consumption was ${memoryConsumed} + memory consumption is no longer detectable CPU usage percentage was ${preloadMemory.cpuUsage.percentCPUUsage} user was in a meeting? ${isInMeeting} pending network request on the client was ${preloadMemory.activeRequests} @@ -105,13 +97,12 @@ function setIsInMeeting(meetingStatus) { /** * Sets preload memory info and calls optimize memory func * - * @param memoryInfo - memory consumption of the preload main script * @param activeRequests - pending active network requests on the client */ -function setPreloadMemoryInfo(memoryInfo, activeRequests) { +function setPreloadMemoryInfo(activeRequests) { log.send(logLevels.INFO, 'Memory info received from preload process now running optimize memory logic'); const cpuUsage = process.getCPUUsage(); - preloadMemory = { memoryInfo, cpuUsage, activeRequests }; + preloadMemory = { cpuUsage, activeRequests }; optimizeMemory(); } diff --git a/js/preload/preloadMain.js b/js/preload/preloadMain.js index d20a7b83..1534e12a 100644 --- a/js/preload/preloadMain.js +++ b/js/preload/preloadMain.js @@ -504,11 +504,9 @@ function createAPI() { local.ipcRenderer.on('memory-info-request', () => { if (window.name === 'main') { - const memory = process.getProcessMemoryInfo(); const activeRequests = typeof local.activeRequests === 'function' ? local.activeRequests() : 0; local.ipcRenderer.send(apiName, { cmd: apiCmds.optimizeMemoryConsumption, - memory, activeRequests, }); } diff --git a/package.json b/package.json index 48d5617e..20c21da4 100644 --- a/package.json +++ b/package.json @@ -86,8 +86,8 @@ "browserify": "16.2.3", "chromedriver": "2.42.0", "cross-env": "5.2.0", - "electron": "3.0.9", - "electron-builder": "20.28.4", + "electron": "4.0.0-beta.7", + "electron-builder": "20.38.0", "electron-builder-squirrel-windows": "12.3.0", "electron-chromedriver": "3.0.0-beta.1", "electron-packager": "12.1.0",