mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-11 02:46:16 -08:00
fix(playback): keep the display awake while built-in players play video
Closes #1095. The renderer tracks every playing <video> through document-level capture listeners (element-level release listeners catch the detached-element pause on component teardown) and, while any video is playing and the document is visible, holds a display-sleep lock: a main-process powerSaveBlocker over IPC in Electron — reliable on Linux where Chromium's own video wake lock depends on DE D-Bus inhibitors — and the Screen Wake Lock API in the PWA. The vote is auto-cleared when the renderer reloads or dies. Radio's <audio> deliberately never blocks display sleep; embedded MPV and external MPV/VLC already manage their own inhibition. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
d73551d780
commit
7349ed6511
11 files changed
+721
No files matched your search
@@ -639,6 +639,14 @@ export interface ElectronBridgeApi {
|
||||
onWindowCloseRequested: (
|
||||
callback: (requestId: number) => void
|
||||
) => () => void;
|
||||
/**
|
||||
* While active, the main process holds a
|
||||
* `powerSaveBlocker('prevent-display-sleep')` so the screen stays awake
|
||||
* during built-in video playback. The flag is cleared automatically when
|
||||
* the renderer navigates, reloads, or dies, so a crashed page can never
|
||||
* leave the display pinned awake.
|
||||
*/
|
||||
setPlaybackKeepAwake: (active: boolean) => Promise<void>;
|
||||
fetchPlaylistByUrl: (
|
||||
url: string,
|
||||
title?: string,
|
||||
|
||||
@@ -107,6 +107,10 @@ export const DELETE_ALL_PLAYLISTS = 'DELETE_ALL_PLAYLISTS';
|
||||
// Remote Control
|
||||
export const REMOTE_CONTROL_CHANGE_CHANNEL = 'REMOTE_CONTROL_CHANGE_CHANNEL';
|
||||
|
||||
// Display sleep: while a built-in video player is playing, the renderer asks
|
||||
// the main process to hold a powerSaveBlocker so the screen stays awake
|
||||
export const PLAYBACK_SET_KEEP_AWAKE = 'PLAYBACK:SET_KEEP_AWAKE';
|
||||
|
||||
// Window controls (custom title bar on Windows/Linux)
|
||||
export const WINDOW_MINIMIZE = 'WINDOW:MINIMIZE';
|
||||
export const WINDOW_TOGGLE_MAXIMIZE = 'WINDOW:TOGGLE_MAXIMIZE';
|
||||
|
||||
Reference in new issue
Block a user