Treat media without duration as live content

This commit is contained in:
Rafał Dzięgiel
2021-04-09 16:07:11 +02:00
parent 8fb6b971fe
commit fa1455556b
2 changed files with 13 additions and 8 deletions

View File

@@ -151,14 +151,16 @@ class ClapperRevealerTop extends CustomRevealer
return this.mediaTitle.visible; return this.mediaTitle.visible;
} }
setTimes(currTime, endTime) setTimes(currTime, endTime, isEndKnown)
{ {
const now = currTime.format(this.timeFormat); const now = currTime.format(this.timeFormat);
const end = endTime.format(this.timeFormat); this.currentTime.label = now;
const endText = `Ends at: ${end}`;
this.currentTime.set_label(now); const end = (isEndKnown)
this.endTime.set_label(endText); ? endTime.format(this.timeFormat)
: 'unknown';
this.endTime.label = `Ends at: ${end}`;
/* Make sure that next timeout is always run after clock changes, /* Make sure that next timeout is always run after clock changes,
* by delaying it for additional few milliseconds */ * by delaying it for additional few milliseconds */

View File

@@ -198,9 +198,12 @@ class ClapperWidget extends Gtk.Grid
/* Set titlebar media title */ /* Set titlebar media title */
this.updateTitle(mediaInfo); this.updateTitle(mediaInfo);
/* FIXME: replace number with Gst.CLOCK_TIME_NONE when GJS
* can do UINT64: https://gitlab.gnome.org/GNOME/gjs/-/merge_requests/524 */
const isLive = (mediaInfo.is_live() || player.duration === 18446744073709552000);
this.isSeekable = (!isLive && mediaInfo.is_seekable());
/* Show/hide position scale on LIVE */ /* Show/hide position scale on LIVE */
const isLive = mediaInfo.is_live();
this.isSeekable = mediaInfo.is_seekable();
this.controls.setLiveMode(isLive, this.isSeekable); this.controls.setLiveMode(isLive, this.isSeekable);
/* Update remaining end time if visible */ /* Update remaining end time if visible */
@@ -339,7 +342,7 @@ class ClapperWidget extends Gtk.Grid
const endTime = currTime.add_seconds( const endTime = currTime.add_seconds(
this.controls.positionAdjustment.get_upper() - this.controls.currentPosition this.controls.positionAdjustment.get_upper() - this.controls.currentPosition
); );
const nextUpdate = this.revealerTop.setTimes(currTime, endTime); const nextUpdate = this.revealerTop.setTimes(currTime, endTime, this.isSeekable);
return nextUpdate; return nextUpdate;
} }