From b1678b71c6b6e191d621305b07042011ec5e1162 Mon Sep 17 00:00:00 2001 From: Dan Flettre Date: Fri, 11 Mar 2016 01:10:39 -0600 Subject: [PATCH] ensure video is paused before hiding window --- main/windows.js | 13 +++++++++---- renderer/index.js | 6 ++++++ renderer/views/player.js | 1 + 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/main/windows.js b/main/windows.js index 10089a3c..fd15bca4 100644 --- a/main/windows.js +++ b/main/windows.js @@ -6,6 +6,7 @@ var windows = module.exports = { 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 @@ -44,10 +45,14 @@ function createMainWindow () { win.on('close', function (e) { if (process.platform === 'darwin' && !app.isQuitting) { e.preventDefault() - // sendSync() ensures that video will pause before window is hidden, at which point - // the update() loop (which uses requestAnimationFrame) ceases to run - win.sendSync('dispatch', 'pause') - win.hide() + // 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() + }) } }) diff --git a/renderer/index.js b/renderer/index.js index d4412518..e5231615 100644 --- a/renderer/index.js +++ b/renderer/index.js @@ -197,9 +197,15 @@ function dispatch (action, ...args) { // window.history.forward() } if (action === 'pause') { + if (state.url !== 'player' || state.video.isPaused) { + ipcRenderer.send('paused-video') + } state.video.isPaused = true update() } + if (action === 'videoPaused') { + ipcRenderer.send('paused-video') + } if (action === 'playPause') { state.video.isPaused = !state.video.isPaused update() diff --git a/renderer/views/player.js b/renderer/views/player.js index ced3e780..6f0e5ad2 100644 --- a/renderer/views/player.js +++ b/renderer/views/player.js @@ -36,6 +36,7 @@ function Player (state, dispatch) { ondblclick=${() => dispatch('toggleFullScreen')} onloadedmetadata=${onLoadedMetadata} onended=${onEnded} + onpause=${() => dispatch('videoPaused')} autoplay>