mirror of
https://github.com/jeffvli/feishin.git
synced 2026-07-04 01:30:01 +02:00
fix: recover mpv playback after the OS resumes from sleep (#2172)
mpv/ffmpeg had no network-level timeout or reconnect options, so a network stream left open across a system sleep would block forever on the now-dead TCP connection instead of failing or reconnecting. Since Node-MPV's IPC commands only resolve when mpv replies, a wedged mpv process also made quit()/restart hang indefinitely, so the only way out was to kill the whole app. - Add --network-timeout and ffmpeg reconnect options to mpv's default parameters so a stalled stream fails fast instead of hanging. - Make the quit() helper resilient to an unresponsive mpv process by racing it against a timeout and force-killing as a fallback. - Listen for Electron's powerMonitor 'resume' event and tell the renderer to reload mpv, so playback recovers automatically instead of requiring a manual app restart.
This commit is contained in:
@@ -68,9 +68,13 @@ export const MpvPlayerEngine = (props: MpvPlayerEngineProps) => {
|
||||
};
|
||||
|
||||
eventEmitter.on('MPV_RELOAD', handleMpvReload);
|
||||
// The main process notifies us after the OS resumes from sleep, since the
|
||||
// stream mpv had open is likely on a now-dead connection.
|
||||
mpvPlayerListener?.rendererMpvReconnect(handleMpvReload);
|
||||
|
||||
return () => {
|
||||
eventEmitter.off('MPV_RELOAD', handleMpvReload);
|
||||
ipc?.removeAllListeners('renderer-mpv-reconnect');
|
||||
};
|
||||
}, []);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user