diff --git a/ChangeLog b/ChangeLog index 243622ef75..9e88dce319 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2004-02-15 Julien MOUTTE + + * examples/gstplay/player.c: (got_eos), (main): Adding some + output for debugging. + * gst-libs/gst/play/play.c: (gst_play_state_change): Stop our + timeouts if we go to any state different from PLAYING. + * gst-libs/gst/riff/riff-read.c: (gst_riff_read_seek): Fix some + more EOS bugs in riff lib. + 2004-02-14 Julien MOUTTE * gst-libs/gst/play/play.c: (gst_play_connect_visualization): Disable diff --git a/examples/gstplay/player.c b/examples/gstplay/player.c index 3c58c0229c..dee721f931 100644 --- a/examples/gstplay/player.c +++ b/examples/gstplay/player.c @@ -77,6 +77,7 @@ got_video_size (GstPlay *play, gint width, gint height) static void got_eos (GstPlay *play) { + g_print ("End Of Stream\n"); g_main_loop_quit (loop); } @@ -157,10 +158,12 @@ main (int argc, char *argv[]) g_main_loop_run (loop); + g_print ("setting pipeline to ready\n"); + gst_element_set_state (GST_ELEMENT (play), GST_STATE_READY); - /* unref */ - gst_object_unref (GST_OBJECT (play)); + /* unref + gst_object_unref (GST_OBJECT (play)); */ exit (0); } diff --git a/gst-libs/gst/play/play.c b/gst-libs/gst/play/play.c index 0fac17bf14..dfa73fd988 100644 --- a/gst-libs/gst/play/play.c +++ b/gst-libs/gst/play/play.c @@ -457,6 +457,16 @@ gst_play_state_change (GstElement *element, GstElementState old, (GSourceFunc) gst_play_get_length_callback, play); } + else { + if (play->priv->tick_id) { + g_source_remove (play->priv->tick_id); + play->priv->tick_id = 0; + } + if (play->priv->length_id) { + g_source_remove (play->priv->length_id); + play->priv->length_id = 0; + } + } if (GST_ELEMENT_CLASS (parent_class)->state_change) GST_ELEMENT_CLASS (parent_class)->state_change (element, old, state); diff --git a/gst-libs/gst/riff/riff-read.c b/gst-libs/gst/riff/riff-read.c index 19d6998193..40fc4005b8 100644 --- a/gst-libs/gst/riff/riff-read.c +++ b/gst-libs/gst/riff/riff-read.c @@ -260,6 +260,8 @@ gst_riff_read_seek (GstRiffRead *riff, break; } else if (GST_EVENT_TYPE (event) != GST_EVENT_DISCONTINUOUS) { gst_pad_event_default (riff->sinkpad, event); + if (GST_EVENT_TYPE (event) == GST_EVENT_EOS) + return NULL; event = NULL; } }