diff --git a/src/main/main.ts b/src/main/main.ts index 0fbefffd..faefb7a6 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -438,7 +438,10 @@ const DEFAULT_MPV_PARAMETERS = (extraParameters?: string[]) => { let mpvInstance: MpvAPI | null = null; -const createMpv = (data: { extraParameters?: string[]; properties?: Record }) => { +const createMpv = async (data: { + extraParameters?: string[]; + properties?: Record; +}): Promise => { const { extraParameters, properties } = data; const params = uniq([...DEFAULT_MPV_PARAMETERS(extraParameters), ...(extraParameters || [])]); @@ -457,15 +460,14 @@ const createMpv = (data: { extraParameters?: string[]; properties?: Record { - console.log('MPV failed to start', error); - }) - .finally(() => { - console.log('Setting MPV properties: ', properties); - mpv.setMultipleProperties(properties || {}); - }); + try { + await mpv.start(); + } catch (error) { + console.log('MPV failed to start', error); + } finally { + console.log('Setting MPV properties: ', properties); + await mpv.setMultipleProperties(properties || {}); + } mpv.on('status', (status, ...rest) => { console.log('MPV Event: status', status.property, status.value, rest); @@ -530,15 +532,15 @@ ipcMain.on( 'player-restart', async (_event, data: { extraParameters?: string[]; properties?: Record }) => { mpvInstance?.quit(); - mpvInstance = createMpv(data); + mpvInstance = await createMpv(data); }, ); -ipcMain.on( +ipcMain.handle( 'player-initialize', async (_event, data: { extraParameters?: string[]; properties?: Record }) => { console.log('Initializing MPV with data: ', data); - mpvInstance = createMpv(data); + mpvInstance = await createMpv(data); }, ); diff --git a/src/main/preload/mpv-player.ts b/src/main/preload/mpv-player.ts index 49c1e34c..a53d52d1 100644 --- a/src/main/preload/mpv-player.ts +++ b/src/main/preload/mpv-player.ts @@ -2,11 +2,11 @@ import { ipcRenderer, IpcRendererEvent } from 'electron'; import { PlayerData, PlayerState } from '/@/renderer/store'; const initialize = (data: { extraParameters?: string[]; properties?: Record }) => { - ipcRenderer.send('player-initialize', data); + return ipcRenderer.invoke('player-initialize', data); }; const restart = (data: { extraParameters?: string[]; properties?: Record }) => { - ipcRenderer.send('player-restart', data); + return ipcRenderer.invoke('player-restart', data); }; const isRunning = () => { diff --git a/src/renderer/app.tsx b/src/renderer/app.tsx index 1b6b82b0..d64b2149 100644 --- a/src/renderer/app.tsx +++ b/src/renderer/app.tsx @@ -108,7 +108,7 @@ export const App = () => { ...getMpvProperties(useSettingsStore.getState().playback.mpvProperties), }; - mpvPlayer?.initialize({ + await mpvPlayer?.initialize({ extraParameters, properties, });