mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-10 04:30:25 +02:00
random cleanup
This commit is contained in:
@@ -51,12 +51,15 @@ 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 hasPopulatedQueueRef = useRef<boolean>(false);
|
||||||
|
const isMountedRef = useRef<boolean>(true);
|
||||||
|
|
||||||
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);
|
||||||
|
|
||||||
// Start the mpv instance on startup
|
// Start the mpv instance on startup
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
isMountedRef.current = true;
|
||||||
|
|
||||||
const initializeMpv = async () => {
|
const initializeMpv = async () => {
|
||||||
const isRunning: boolean | undefined = await mpvPlayer?.isRunning();
|
const isRunning: boolean | undefined = await mpvPlayer?.isRunning();
|
||||||
|
|
||||||
@@ -83,6 +86,7 @@ export const MpvPlayerEngine = (props: MpvPlayerEngineProps) => {
|
|||||||
initializeMpv();
|
initializeMpv();
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
|
isMountedRef.current = false;
|
||||||
mpvPlayer?.stop();
|
mpvPlayer?.stop();
|
||||||
mpvPlayer?.cleanup();
|
mpvPlayer?.cleanup();
|
||||||
isInitializedRef.current = false;
|
isInitializedRef.current = false;
|
||||||
@@ -184,13 +188,13 @@ export const MpvPlayerEngine = (props: MpvPlayerEngineProps) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const updateProgress = async () => {
|
const updateProgress = async () => {
|
||||||
if (!mpvPlayer) {
|
if (!mpvPlayer || !isMountedRef.current) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const time = await mpvPlayer.getCurrentTime();
|
const time = await mpvPlayer.getCurrentTime();
|
||||||
if (time !== undefined) {
|
if (time !== undefined && isMountedRef.current) {
|
||||||
onProgress({
|
onProgress({
|
||||||
played: time / (duration || time + 10),
|
played: time / (duration || time + 10),
|
||||||
playedSeconds: time,
|
playedSeconds: time,
|
||||||
@@ -210,8 +214,10 @@ export const MpvPlayerEngine = (props: MpvPlayerEngineProps) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
|
isMountedRef.current = false;
|
||||||
if (progressIntervalRef.current) {
|
if (progressIntervalRef.current) {
|
||||||
clearInterval(progressIntervalRef.current);
|
clearInterval(progressIntervalRef.current);
|
||||||
|
progressIntervalRef.current = null;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}, [currentSrc, isTransitioning, duration, onProgress]);
|
}, [currentSrc, isTransitioning, duration, onProgress]);
|
||||||
|
|||||||
@@ -57,10 +57,6 @@ export const useMainPlayerListener = () => {
|
|||||||
mediaPrevious();
|
mediaPrevious();
|
||||||
});
|
});
|
||||||
|
|
||||||
mpvPlayerListener.rendererPlayPause(() => {
|
|
||||||
mediaTogglePlayPause();
|
|
||||||
});
|
|
||||||
|
|
||||||
mpvPlayerListener.rendererPlay(() => {
|
mpvPlayerListener.rendererPlay(() => {
|
||||||
mediaPlay();
|
mediaPlay();
|
||||||
});
|
});
|
||||||
@@ -113,7 +109,6 @@ export const useMainPlayerListener = () => {
|
|||||||
ipc?.removeAllListeners('renderer-player-play-pause');
|
ipc?.removeAllListeners('renderer-player-play-pause');
|
||||||
ipc?.removeAllListeners('renderer-player-next');
|
ipc?.removeAllListeners('renderer-player-next');
|
||||||
ipc?.removeAllListeners('renderer-player-previous');
|
ipc?.removeAllListeners('renderer-player-previous');
|
||||||
ipc?.removeAllListeners('renderer-player-play-pause');
|
|
||||||
ipc?.removeAllListeners('renderer-player-play');
|
ipc?.removeAllListeners('renderer-player-play');
|
||||||
ipc?.removeAllListeners('renderer-player-pause');
|
ipc?.removeAllListeners('renderer-player-pause');
|
||||||
ipc?.removeAllListeners('renderer-player-stop');
|
ipc?.removeAllListeners('renderer-player-stop');
|
||||||
|
|||||||
Reference in New Issue
Block a user