mirror of
https://gitlab.com/futo-org/fcast.git
synced 2025-08-15 11:52:49 +00:00
Receivers: Fix viewer playlist media detection race condition
This commit is contained in:
parent
64354001c5
commit
a2429a29ce
1 changed files with 5 additions and 7 deletions
|
@ -32,7 +32,7 @@ let cachedPlaylist: PlaylistContent = null;
|
||||||
let cachedPlayMediaItem: MediaItem = null;
|
let cachedPlayMediaItem: MediaItem = null;
|
||||||
let playlistIndex = 0;
|
let playlistIndex = 0;
|
||||||
let isMediaItem = false;
|
let isMediaItem = false;
|
||||||
let playItemCached = false;
|
let isPlaylistPlayRequest = 0;
|
||||||
let imageViewerPlaybackState: PlaybackState = PlaybackState.Idle;
|
let imageViewerPlaybackState: PlaybackState = PlaybackState.Idle;
|
||||||
|
|
||||||
let uiHideTimer = new Timer(() => { playerCtrlStateUpdate(PlayerControlEvent.UiFadeOut); }, 3000);
|
let uiHideTimer = new Timer(() => { playerCtrlStateUpdate(PlayerControlEvent.UiFadeOut); }, 3000);
|
||||||
|
@ -59,16 +59,14 @@ let showDurationTimer = new Timer(() => {
|
||||||
}, 0, false);
|
}, 0, false);
|
||||||
|
|
||||||
function onPlay(_event, value: PlayMessage) {
|
function onPlay(_event, value: PlayMessage) {
|
||||||
if (!playItemCached) {
|
if (isPlaylistPlayRequest === 0) {
|
||||||
cachedPlayMediaItem = mediaItemFromPlayMessage(value);
|
cachedPlayMediaItem = mediaItemFromPlayMessage(value);
|
||||||
isMediaItem = false;
|
isMediaItem = false;
|
||||||
}
|
}
|
||||||
window.targetAPI.sendEvent(new EventMessage(Date.now(), new MediaItemEvent(EventType.MediaItemChange, cachedPlayMediaItem)));
|
window.targetAPI.sendEvent(new EventMessage(Date.now(), new MediaItemEvent(EventType.MediaItemChange, cachedPlayMediaItem)));
|
||||||
logger.info('Media playback changed:', cachedPlayMediaItem);
|
logger.info('Media playback changed:', cachedPlayMediaItem);
|
||||||
playItemCached = false;
|
isPlaylistPlayRequest = isPlaylistPlayRequest <= 0 ? 0 : isPlaylistPlayRequest - 1;
|
||||||
showDurationTimer.stop();
|
showDurationTimer.stop();
|
||||||
|
|
||||||
window.targetAPI.sendEvent(new EventMessage(Date.now(), new MediaItemEvent(EventType.MediaItemChange, cachedPlayMediaItem)));
|
|
||||||
const src = value.url ? value.url : value.content;
|
const src = value.url ? value.url : value.content;
|
||||||
|
|
||||||
loadingTimer.start();
|
loadingTimer.start();
|
||||||
|
@ -143,7 +141,7 @@ function onPlayPlaylist(_event, value: PlaylistContent) {
|
||||||
playlistIndex = offset;
|
playlistIndex = offset;
|
||||||
isMediaItem = true;
|
isMediaItem = true;
|
||||||
cachedPlayMediaItem = value.items[offset];
|
cachedPlayMediaItem = value.items[offset];
|
||||||
playItemCached = true;
|
isPlaylistPlayRequest++;
|
||||||
window.targetAPI.sendPlayRequest(playMessage, playlistIndex);
|
window.targetAPI.sendPlayRequest(playMessage, playlistIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,7 +160,7 @@ function setPlaylistItem(index: number) {
|
||||||
logger.info(`Setting playlist item to index ${index}`);
|
logger.info(`Setting playlist item to index ${index}`);
|
||||||
playlistIndex = index;
|
playlistIndex = index;
|
||||||
cachedPlayMediaItem = cachedPlaylist.items[playlistIndex];
|
cachedPlayMediaItem = cachedPlaylist.items[playlistIndex];
|
||||||
playItemCached = true;
|
isPlaylistPlayRequest++;
|
||||||
window.targetAPI.sendPlayRequest(playMessageFromMediaItem(cachedPlaylist.items[playlistIndex]), playlistIndex);
|
window.targetAPI.sendPlayRequest(playMessageFromMediaItem(cachedPlaylist.items[playlistIndex]), playlistIndex);
|
||||||
showDurationTimer.stop();
|
showDurationTimer.stop();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue