diff --git a/src/renderer/features/player/audio-player/engine/mpv-player-engine.tsx b/src/renderer/features/player/audio-player/engine/mpv-player-engine.tsx index 6dd7b5982..4bb60f062 100644 --- a/src/renderer/features/player/audio-player/engine/mpv-player-engine.tsx +++ b/src/renderer/features/player/audio-player/engine/mpv-player-engine.tsx @@ -51,12 +51,15 @@ export const MpvPlayerEngine = (props: MpvPlayerEngineProps) => { const progressIntervalRef = useRef(null); const isInitializedRef = useRef(false); const hasPopulatedQueueRef = useRef(false); + const isMountedRef = useRef(true); const mpvExtraParameters = useSettingsStore((store) => store.playback.mpvExtraParameters); const mpvProperties = useSettingsStore((store) => store.playback.mpvProperties); // Start the mpv instance on startup useEffect(() => { + isMountedRef.current = true; + const initializeMpv = async () => { const isRunning: boolean | undefined = await mpvPlayer?.isRunning(); @@ -83,6 +86,7 @@ export const MpvPlayerEngine = (props: MpvPlayerEngineProps) => { initializeMpv(); return () => { + isMountedRef.current = false; mpvPlayer?.stop(); mpvPlayer?.cleanup(); isInitializedRef.current = false; @@ -184,13 +188,13 @@ export const MpvPlayerEngine = (props: MpvPlayerEngineProps) => { } const updateProgress = async () => { - if (!mpvPlayer) { + if (!mpvPlayer || !isMountedRef.current) { return; } try { const time = await mpvPlayer.getCurrentTime(); - if (time !== undefined) { + if (time !== undefined && isMountedRef.current) { onProgress({ played: time / (duration || time + 10), playedSeconds: time, @@ -210,8 +214,10 @@ export const MpvPlayerEngine = (props: MpvPlayerEngineProps) => { } return () => { + isMountedRef.current = false; if (progressIntervalRef.current) { clearInterval(progressIntervalRef.current); + progressIntervalRef.current = null; } }; }, [currentSrc, isTransitioning, duration, onProgress]); diff --git a/src/renderer/features/player/audio-player/hooks/use-main-player-listener.tsx b/src/renderer/features/player/audio-player/hooks/use-main-player-listener.tsx index 615958212..7dbecd5dd 100644 --- a/src/renderer/features/player/audio-player/hooks/use-main-player-listener.tsx +++ b/src/renderer/features/player/audio-player/hooks/use-main-player-listener.tsx @@ -57,10 +57,6 @@ export const useMainPlayerListener = () => { mediaPrevious(); }); - mpvPlayerListener.rendererPlayPause(() => { - mediaTogglePlayPause(); - }); - mpvPlayerListener.rendererPlay(() => { mediaPlay(); }); @@ -113,7 +109,6 @@ export const useMainPlayerListener = () => { ipc?.removeAllListeners('renderer-player-play-pause'); ipc?.removeAllListeners('renderer-player-next'); ipc?.removeAllListeners('renderer-player-previous'); - ipc?.removeAllListeners('renderer-player-play-pause'); ipc?.removeAllListeners('renderer-player-play'); ipc?.removeAllListeners('renderer-player-pause'); ipc?.removeAllListeners('renderer-player-stop');