From 15e3e49aa4fe9768fcb12f6b0f39a9376bcf2a15 Mon Sep 17 00:00:00 2001 From: DC Date: Mon, 21 Mar 2016 03:29:54 -0700 Subject: [PATCH] Fix #176: close window on OSX --- main/ipc.js | 4 ++-- main/windows.js | 9 +-------- renderer/index.js | 14 ++++++++++++-- renderer/state.js | 2 +- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/main/ipc.js b/main/ipc.js index 19288727..e610cad5 100644 --- a/main/ipc.js +++ b/main/ipc.js @@ -66,10 +66,10 @@ function setBounds (bounds, maximize) { // Maximize or minimize, if the second argument is present var willBeMaximized if (maximize === true) { - if (!windows.main.isMaximized) windows.main.maximize() + if (!windows.main.isMaximized()) windows.main.maximize() willBeMaximized = true } else if (maximize === false) { - if (windows.main.isMaximized) windows.main.unmaximize() + if (windows.main.isMaximized()) windows.main.unmaximize() willBeMaximized = false } else { willBeMaximized = windows.main.isMaximized() diff --git a/main/windows.js b/main/windows.js index f56df2b8..fa851ac6 100644 --- a/main/windows.js +++ b/main/windows.js @@ -6,7 +6,6 @@ var windows = module.exports = { var electron = require('electron') var app = electron.app -var ipcMain = electron.ipcMain var config = require('../config') var menu = require('./menu') @@ -44,14 +43,8 @@ function createMainWindow () { win.on('close', function (e) { if (process.platform === 'darwin' && !app.isQuitting) { e.preventDefault() - // When the window is hidden, the update() loop (which uses - // requestAnimationFrame) ceases to run. We need to make sure - // the video pauses before hiding or it will continue to play. - win.send('dispatch', 'pause') - ipcMain.once('paused-video', function (e) { - win.hide() - }) + win.hide() } }) diff --git a/renderer/index.js b/renderer/index.js index f4d859e0..e3d2927a 100644 --- a/renderer/index.js +++ b/renderer/index.js @@ -225,6 +225,12 @@ function dispatch (action, ...args) { if (action === 'playPause') { playPause() } + if (action === 'play') { + playPause(false) + } + if (action === 'pause') { + playPause(true) + } if (action === 'playbackJump') { jumpToTime(args[0] /* seconds */) } @@ -234,7 +240,6 @@ function dispatch (action, ...args) { } if (action === 'videoPaused') { state.video.isPaused = true - ipcRenderer.send('paused-video') ipcRenderer.send('unblockPowerSave') } if (action === 'toggleFullScreen') { @@ -251,7 +256,12 @@ function dispatch (action, ...args) { } } -function playPause () { +// Plays or pauses the video. If isPaused is undefined, acts as a toggle +function playPause (isPaused) { + if (isPaused === state.video.isPaused) { + return // Nothing to do + } + // Either isPaused is undefined, or it's the opposite of the current state. Toggle. if (Cast.isCasting()) { Cast.playPause() } diff --git a/renderer/state.js b/renderer/state.js index 4288b725..3f08ec44 100644 --- a/renderer/state.js +++ b/renderer/state.js @@ -32,7 +32,7 @@ module.exports = { video: { /* state of the video player screen */ currentTime: 0, /* seconds */ duration: 1, /* seconds */ - isPaused: false, + isPaused: true, mouseStationarySince: 0 /* Unix time in ms */ }, dock: {