diff --git a/index.js b/index.js index 70e5a365..500486c1 100644 --- a/index.js +++ b/index.js @@ -1,3 +1,4 @@ +console.time('init') require('./main') // report crashes diff --git a/main/index.js b/main/index.js index dd3211f9..87038993 100644 --- a/main/index.js +++ b/main/index.js @@ -1,5 +1,3 @@ -var startTime = Date.now() - var electron = require('electron') var ipc = require('./ipc') var menu = require('./menu') @@ -8,8 +6,11 @@ var windows = require('./windows') var app = electron.app +app.on('open-file', onOpen) +app.on('open-url', onOpen) + +app.ipcReady = false // main window has finished loading and IPC is ready app.isQuitting = false -app.startTime = startTime app.on('ready', function () { menu.init() @@ -17,9 +18,6 @@ app.on('ready', function () { shortcuts.init() }) -app.on('open-file', onOpen) -app.on('open-url', onOpen) - app.on('before-quit', function () { app.isQuitting = true }) @@ -42,5 +40,13 @@ ipc.init() function onOpen (e, torrentId) { e.preventDefault() - windows.main.send('dispatch', 'openFiles', torrentId) + console.log(app.ipcReady) + if (app.ipcReady) { + openFiles() + } else { + app.on('ipcReady', openFiles) + } + function openFiles () { + windows.main.send('dispatch', 'openFiles', torrentId) + } } diff --git a/main/ipc.js b/main/ipc.js index bd3b090e..0b2fe1ad 100644 --- a/main/ipc.js +++ b/main/ipc.js @@ -4,6 +4,7 @@ module.exports = { var debug = require('debug')('webtorrent-app:ipcMain') var electron = require('electron') + var app = electron.app var ipcMain = electron.ipcMain var powerSaveBlocker = electron.powerSaveBlocker @@ -15,6 +16,12 @@ var windows = require('./windows') var powerSaveBlockID = 0 function init () { + ipcMain.on('ipcReady', function (e) { + console.timeEnd('init') + app.ipcReady = true + app.emit('ipcReady') + }) + ipcMain.on('showOpenTorrentFile', function (e) { menu.showOpenTorrentFile() }) diff --git a/main/menu.js b/main/menu.js index 51d46698..2f9b960e 100644 --- a/main/menu.js +++ b/main/menu.js @@ -7,12 +7,14 @@ module.exports = { toggleFullScreen: toggleFullScreen } -var config = require('../config') var debug = require('debug')('webtorrent-app:menu') var electron = require('electron') -var windows = require('./windows') var app = electron.app + +var config = require('../config') +var windows = require('./windows') + var appMenu, dockMenu function init () { @@ -51,7 +53,6 @@ function toggleDevTools () { function reloadWindow () { debug('reloadWindow') if (windows.main) { - app.startTime = Date.now() windows.main.webContents.reloadIgnoringCache() } } diff --git a/main/shortcuts.js b/main/shortcuts.js index 2db315a3..07f8338d 100644 --- a/main/shortcuts.js +++ b/main/shortcuts.js @@ -4,11 +4,12 @@ module.exports = { var electron = require('electron') var localShortcut = require('electron-localshortcut') -var menu = require('./menu') -var windows = require('./windows') var globalShortcut = electron.globalShortcut +var menu = require('./menu') +var windows = require('./windows') + function init () { // Special "media key" for play/pause, available on some keyboards globalShortcut.register('MediaPlayPause', () => windows.main.send('dispatch', 'playPause')) diff --git a/main/windows.js b/main/windows.js index fd15bca4..17988afd 100644 --- a/main/windows.js +++ b/main/windows.js @@ -3,19 +3,19 @@ var windows = module.exports = { createMainWindow: createMainWindow } -var config = require('../config') -var debug = require('debug')('webtorrent-app:windows') var electron = require('electron') -var ipcMain = electron.ipcMain -var menu = require('./menu') var app = electron.app +var ipcMain = electron.ipcMain + +var config = require('../config') +var menu = require('./menu') function createMainWindow () { var win = windows.main = new electron.BrowserWindow({ autoHideMenuBar: true, // Hide top menu bar unless Alt key is pressed (Windows, Linux) backgroundColor: '#282828', - darkTheme: true, // Forces dark theme (GTK+3 only) + darkTheme: true, // Forces dark theme (GTK+3) icon: config.APP_ICON, minWidth: 375, minHeight: 38 + (120 * 2), // header height + 2 torrents @@ -32,7 +32,6 @@ function createMainWindow () { }) win.webContents.on('did-finish-load', function () { - debug('startup time: %sms', Date.now() - app.startTime) win.show() }) diff --git a/renderer/index.js b/renderer/index.js index 29db7ff1..8075019f 100644 --- a/renderer/index.js +++ b/renderer/index.js @@ -246,6 +246,8 @@ function dispatch (action, ...args) { } function setupIpc () { + ipcRenderer.send('ipcReady') + ipcRenderer.on('dispatch', function (e, action, ...args) { dispatch(action, ...args) })