diff options
author | Benjamin Otte <otte@redhat.com> | 2021-03-29 17:03:33 +0200 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2021-03-29 17:08:34 +0200 |
commit | 06be1f8b52eb486b3fe0936f935eec9ea12339ef (patch) | |
tree | 2496daf3819187ea058ef48e076ddf0e3fdca87c /modules | |
parent | 72012113fdab625be2cf13f23473716aa2a64604 (diff) | |
download | gtk+-06be1f8b52eb486b3fe0936f935eec9ea12339ef.tar.gz |
gstmedia: Ensure we prepare files without duration
In particular this fixes playback of images.
Fixes #3810
Diffstat (limited to 'modules')
-rw-r--r-- | modules/media/gtkgstmediafile.c | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/modules/media/gtkgstmediafile.c b/modules/media/gtkgstmediafile.c index 6382f3b10a..7edc682e9c 100644 --- a/modules/media/gtkgstmediafile.c +++ b/modules/media/gtkgstmediafile.c @@ -127,10 +127,26 @@ g_io_module_query (void) } static void +gtk_gst_media_file_ensure_prepared (GtkGstMediaFile *self, + gint64 duration) +{ + if (gtk_media_stream_is_prepared (GTK_MEDIA_STREAM (self))) + return; + + gtk_media_stream_prepared (GTK_MEDIA_STREAM (self), + TRUE, + TRUE, + TRUE, + duration); +} + +static void gtk_gst_media_file_position_updated_cb (GstPlayer *player, GstClockTime time, GtkGstMediaFile *self) { + gtk_gst_media_file_ensure_prepared (self, 0); + gtk_media_stream_update (GTK_MEDIA_STREAM (self), FROM_GST_TIME (time)); } @@ -139,14 +155,7 @@ gtk_gst_media_file_duration_changed_cb (GstPlayer *player, GstClockTime duration, GtkGstMediaFile *self) { - if (gtk_media_stream_is_prepared (GTK_MEDIA_STREAM (self))) - return; - - gtk_media_stream_prepared (GTK_MEDIA_STREAM (self), - TRUE, - TRUE, - TRUE, - FROM_GST_TIME (duration)); + gtk_gst_media_file_ensure_prepared (self, FROM_GST_TIME (duration)); } static void @@ -176,6 +185,8 @@ static void gtk_gst_media_file_end_of_stream_cb (GstPlayer *player, GtkGstMediaFile *self) { + gtk_gst_media_file_ensure_prepared (self, 0); + if (gtk_media_stream_get_ended (GTK_MEDIA_STREAM (self))) return; |