From 311f328b00dad993b18b2438d879bd57f0f182ea Mon Sep 17 00:00:00 2001 From: Travis Shivers Date: Mon, 20 Jul 2020 17:43:55 -0500 Subject: [PATCH] Fix playback rate state notification until it actuall finishes processing the change --- src/store/modules/slplayer/actions.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/store/modules/slplayer/actions.js b/src/store/modules/slplayer/actions.js index 969e4504..56255db5 100644 --- a/src/store/modules/slplayer/actions.js +++ b/src/store/modules/slplayer/actions.js @@ -154,6 +154,11 @@ export default { setCurrentTimeMs(seekToMs); }, + PROCESS_STATE_UPDATE_ON_PLAYBACK_RATE_CHANGE: async ({ dispatch }, signal) => { + await waitForMediaElementEvent({ signal, type: 'ratechange' }); + await dispatch('synclounge/PROCESS_PLAYER_STATE_UPDATE', true, { root: true }); + }, + SPEED_SEEK: async ({ dispatch, rootGetters }, { cancelSignal, seekToMs }) => { console.log('speed seek'); const currentTimeMs = await dispatch('FETCH_PLAYER_CURRENT_TIME_MS_OR_FALLBACK'); @@ -164,14 +169,15 @@ export default { const main = CAF(function* main(signal) { setPlaybackRate(rate); + try { - // Nosync process - dispatch('synclounge/PROCESS_PLAYER_STATE_UPDATE', true, { root: true }); + // Nosync process. Purposefully not awaited + dispatch('PROCESS_STATE_UPDATE_ON_PLAYBACK_RATE_CHANGE', signal); yield CAF.delay(signal, timeUntilSynced); } finally { setPlaybackRate(1); - // Nosync process - dispatch('synclounge/PROCESS_PLAYER_STATE_UPDATE', true, { root: true }); + // Nosync process. Purposefully not awaited + dispatch('PROCESS_STATE_UPDATE_ON_PLAYBACK_RATE_CHANGE', signal); } });