ensure video is paused before hiding window
This commit is contained in:
@@ -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()
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -36,6 +36,7 @@ function Player (state, dispatch) {
|
||||
ondblclick=${() => dispatch('toggleFullScreen')}
|
||||
onloadedmetadata=${onLoadedMetadata}
|
||||
onended=${onEnded}
|
||||
onpause=${() => dispatch('videoPaused')}
|
||||
autoplay>
|
||||
</video>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user