Clean up mpv startup
This commit is contained in:
parent
35f9798bed
commit
6a01d44600
3 changed files with 34 additions and 18 deletions
|
@ -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();
|
||||
});
|
||||
|
|
|
@ -342,15 +342,20 @@ const createMpv = (data: { extraParameters?: string[]; properties?: Record<strin
|
|||
params,
|
||||
);
|
||||
|
||||
console.log('Setting mpv properties: ', properties);
|
||||
console.log('Setting MPV properties: ', properties);
|
||||
mpvInstance.setMultipleProperties(properties || {});
|
||||
|
||||
mpvInstance.start().catch((error) => {
|
||||
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<strin
|
|||
|
||||
// Automatically updates the play button when the player is playing
|
||||
mpvInstance.on('resumed', () => {
|
||||
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<strin
|
|||
mpvInstance.on('timeposition', (time: number) => {
|
||||
getMainWindow()?.webContents.send('renderer-player-current-time', time);
|
||||
});
|
||||
|
||||
mpvInstance.on('quit', () => {
|
||||
console.log('MPV Event: quit');
|
||||
});
|
||||
};
|
||||
|
||||
export const getMpvInstance = () => {
|
||||
|
|
|
@ -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()) {
|
||||
|
|
Reference in a new issue