Merge pull request #133 from Flet/pause-on-hide-again

ensure video is paused before hiding window
This commit is contained in:
Feross Aboukhadijeh
2016-03-10 23:41:04 -08:00
3 changed files with 16 additions and 4 deletions

View File

@@ -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()
})
}
})

View File

@@ -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()

View File

@@ -36,6 +36,7 @@ function Player (state, dispatch) {
ondblclick=${() => dispatch('toggleFullScreen')}
onloadedmetadata=${onLoadedMetadata}
onended=${onEnded}
onpause=${() => dispatch('videoPaused')}
autoplay>
</video>
</div>