mirror of
https://github.com/antebudimir/feishin.git
synced 2026-01-01 02:13:33 +00:00
Refactor mpv initialization/cleanup
- Don't re-initialize the player on re-render - Fixes the player potentially crashing on hot reload
This commit is contained in:
parent
d97fe4c621
commit
c3c1f4cc5f
5 changed files with 157 additions and 52 deletions
|
|
@ -34,7 +34,7 @@ export const App = () => {
|
|||
const { type: playbackType } = usePlaybackSettings();
|
||||
const { bindings } = useHotkeySettings();
|
||||
const handlePlayQueueAdd = useHandlePlayQueueAdd();
|
||||
const { restoreQueue } = useQueueControls();
|
||||
const { clearQueue, restoreQueue } = useQueueControls();
|
||||
|
||||
useEffect(() => {
|
||||
const root = document.documentElement;
|
||||
|
|
@ -43,24 +43,34 @@ export const App = () => {
|
|||
|
||||
// Start the mpv instance on startup
|
||||
useEffect(() => {
|
||||
const initializeMpv = async () => {
|
||||
const isRunning: boolean | undefined = await mpvPlayer?.isRunning();
|
||||
|
||||
if (!isRunning) {
|
||||
const extraParameters = useSettingsStore.getState().playback.mpvExtraParameters;
|
||||
const properties = {
|
||||
...getMpvProperties(useSettingsStore.getState().playback.mpvProperties),
|
||||
};
|
||||
|
||||
mpvPlayer?.initialize({
|
||||
extraParameters,
|
||||
properties,
|
||||
});
|
||||
|
||||
mpvPlayer?.volume(properties.volume);
|
||||
}
|
||||
};
|
||||
|
||||
if (isElectron() && playbackType === PlaybackType.LOCAL) {
|
||||
const extraParameters = useSettingsStore.getState().playback.mpvExtraParameters;
|
||||
const properties = {
|
||||
...getMpvProperties(useSettingsStore.getState().playback.mpvProperties),
|
||||
};
|
||||
|
||||
mpvPlayer?.initialize({
|
||||
extraParameters,
|
||||
properties,
|
||||
});
|
||||
|
||||
mpvPlayer?.volume(properties.volume);
|
||||
initializeMpv();
|
||||
}
|
||||
|
||||
return () => {
|
||||
mpvPlayer?.quit();
|
||||
clearQueue();
|
||||
mpvPlayer?.stop();
|
||||
mpvPlayer?.cleanup();
|
||||
};
|
||||
}, [playbackType]);
|
||||
}, [clearQueue, playbackType]);
|
||||
|
||||
useEffect(() => {
|
||||
if (isElectron()) {
|
||||
|
|
|
|||
|
|
@ -613,10 +613,6 @@ export const useCenterControls = (args: { playersRef: any }) => {
|
|||
handleAutoNext();
|
||||
});
|
||||
|
||||
mpvPlayerListener.rendererQuit(() => {
|
||||
handleQuit();
|
||||
});
|
||||
|
||||
mpvPlayerListener.rendererToggleShuffle(() => {
|
||||
handleToggleShuffle();
|
||||
});
|
||||
|
|
@ -639,7 +635,6 @@ export const useCenterControls = (args: { playersRef: any }) => {
|
|||
ipc?.removeAllListeners('renderer-player-stop');
|
||||
ipc?.removeAllListeners('renderer-player-current-time');
|
||||
ipc?.removeAllListeners('renderer-player-auto-next');
|
||||
ipc?.removeAllListeners('renderer-player-quit');
|
||||
ipc?.removeAllListeners('renderer-player-toggle-shuffle');
|
||||
ipc?.removeAllListeners('renderer-player-toggle-repeat');
|
||||
ipc?.removeAllListeners('renderer-player-error');
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue