diff --git a/src/main/features/core/player/index.ts b/src/main/features/core/player/index.ts index 95a05a8b..b2d7a461 100644 --- a/src/main/features/core/player/index.ts +++ b/src/main/features/core/player/index.ts @@ -117,7 +117,3 @@ ipcMain.on('player-volume', async (_event, value: number) => { ipcMain.on('player-mute', async () => { await getMpvInstance()?.mute(); }); - -ipcMain.on('player-quit', async () => { - await getMpvInstance()?.stop(); -}); diff --git a/src/main/main.ts b/src/main/main.ts index be10e034..bbddb94b 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -342,15 +342,20 @@ const createMpv = (data: { extraParameters?: string[]; properties?: Record { - console.log('error starting mpv', error); + console.log('MPV Event: start error', error); }); - mpvInstance.on('status', (status) => { + mpvInstance.on('status', (status, ...rest) => { + console.log('MPV Event: status', status.property, status.value, rest); if (status.property === 'playlist-pos') { + if (status.value === -1) { + mpvInstance?.stop(); + } + if (status.value !== 0) { getMainWindow()?.webContents.send('renderer-player-auto-next'); } @@ -359,16 +364,19 @@ const createMpv = (data: { extraParameters?: string[]; properties?: Record { + console.log('MPV Event: resumed'); getMainWindow()?.webContents.send('renderer-player-play'); }); // Automatically updates the play button when the player is stopped mpvInstance.on('stopped', () => { + console.log('MPV Event: stopped'); getMainWindow()?.webContents.send('renderer-player-stop'); }); // Automatically updates the play button when the player is paused mpvInstance.on('paused', () => { + console.log('MPV Event: paused'); getMainWindow()?.webContents.send('renderer-player-pause'); }); @@ -376,6 +384,10 @@ const createMpv = (data: { extraParameters?: string[]; properties?: Record { getMainWindow()?.webContents.send('renderer-player-current-time', time); }); + + mpvInstance.on('quit', () => { + console.log('MPV Event: quit'); + }); }; export const getMpvInstance = () => { diff --git a/src/renderer/app.tsx b/src/renderer/app.tsx index dcaf84f3..c02251cd 100644 --- a/src/renderer/app.tsx +++ b/src/renderer/app.tsx @@ -8,7 +8,7 @@ import { initSimpleImg } from 'react-simple-img'; import { BaseContextModal } from './components'; import { useTheme } from './hooks'; import { AppRouter } from './router/app-router'; -import { useHotkeySettings, useSettingsStore } from './store/settings.store'; +import { useHotkeySettings, usePlaybackSettings, useSettingsStore } from './store/settings.store'; import './styles/global.scss'; import '@ag-grid-community/styles/ag-grid.css'; import { ContextMenuProvider } from '/@/renderer/features/context-menu'; @@ -18,6 +18,7 @@ import { AddToPlaylistContextModal } from '/@/renderer/features/playlists'; import isElectron from 'is-electron'; import { getMpvProperties } from '/@/renderer/features/settings/components/playback/mpv-settings'; import { usePlayerStore } from '/@/renderer/store'; +import { PlaybackType } from '/@/renderer/types'; ModuleRegistry.registerModules([ClientSideRowModelModule, InfiniteRowModelModule]); @@ -29,6 +30,7 @@ const ipc = isElectron() ? window.electron.ipc : null; export const App = () => { const theme = useTheme(); const contentFont = useSettingsStore((state) => state.general.fontContent); + const { type: playbackType } = usePlaybackSettings(); const { bindings } = useHotkeySettings(); const handlePlayQueueAdd = useHandlePlayQueueAdd(); @@ -39,17 +41,23 @@ export const App = () => { // Start the mpv instance on startup useEffect(() => { - const extraParameters = useSettingsStore.getState().playback.mpvExtraParameters; - const properties = { - ...getMpvProperties(useSettingsStore.getState().playback.mpvProperties), - volume: usePlayerStore.getState().volume || 50, - }; + if (isElectron() && playbackType === PlaybackType.LOCAL) { + const extraParameters = useSettingsStore.getState().playback.mpvExtraParameters; + const properties = { + ...getMpvProperties(useSettingsStore.getState().playback.mpvProperties), + volume: usePlayerStore.getState().volume || 50, + }; - mpvPlayer?.initialize({ - extraParameters, - properties, - }); - }, []); + mpvPlayer?.initialize({ + extraParameters, + properties, + }); + } + + return () => { + mpvPlayer?.quit(); + }; + }, [playbackType]); useEffect(() => { if (isElectron()) {