fix mpv queue initialization running multiple times

This commit is contained in:
jeffvli
2025-11-14 18:26:34 -08:00
parent d25b62f7d9
commit 1ab9012446
@@ -50,6 +50,7 @@ export const MpvPlayerEngine = (props: MpvPlayerEngineProps) => {
const progressIntervalRef = useRef<NodeJS.Timeout | null>(null); const progressIntervalRef = useRef<NodeJS.Timeout | null>(null);
const isInitializedRef = useRef<boolean>(false); const isInitializedRef = useRef<boolean>(false);
const hasPopulatedQueueRef = useRef<boolean>(false);
const mpvExtraParameters = useSettingsStore((store) => store.playback.mpvExtraParameters); const mpvExtraParameters = useSettingsStore((store) => store.playback.mpvExtraParameters);
const mpvProperties = useSettingsStore((store) => store.playback.mpvProperties); const mpvProperties = useSettingsStore((store) => store.playback.mpvProperties);
@@ -85,20 +86,21 @@ export const MpvPlayerEngine = (props: MpvPlayerEngineProps) => {
mpvPlayer?.stop(); mpvPlayer?.stop();
mpvPlayer?.cleanup(); mpvPlayer?.cleanup();
isInitializedRef.current = false; isInitializedRef.current = false;
hasPopulatedQueueRef.current = false;
}; };
}, [mpvExtraParameters, mpvProperties]); }, [mpvExtraParameters, mpvProperties]);
// Populate mpv queue after initialization // Populate mpv queue after initialization
useEffect(() => { useEffect(() => {
if (!mpvPlayer || !isInitializedRef.current) { if (!mpvPlayer || !isInitializedRef.current || hasPopulatedQueueRef.current) {
return; return;
} }
if (currentSrc) { if (currentSrc) {
const shouldPause = playerStatus !== PlayerStatus.PLAYING; mpvPlayer.setQueue(currentSrc, nextSrc, true);
mpvPlayer.setQueue(currentSrc, nextSrc, shouldPause); hasPopulatedQueueRef.current = true;
} }
}, [currentSrc, nextSrc, playerStatus]); }, [currentSrc, nextSrc]);
// Update volume // Update volume
useEffect(() => { useEffect(() => {