diff --git a/ChangeLog b/ChangeLog index 4cefb8829d..59a93bba7c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-05-15 Julien MOUTTE + + * gst/playback/gstdecodebin.c: (cleanup_decodebin), + (gst_decode_bin_change_state): Make decodebin reusable + when going from PAUSE_TO_READY and then back to PAUSED. + Fixes #331678. + 2006-05-15 Wim Taymans * ext/vorbis/vorbisdec.c: (vorbis_get_query_types), diff --git a/gst/playback/gstdecodebin.c b/gst/playback/gstdecodebin.c index 5088451b24..c9198d7201 100644 --- a/gst/playback/gstdecodebin.c +++ b/gst/playback/gstdecodebin.c @@ -1386,6 +1386,7 @@ cleanup_decodebin (GstDecodeBin * decode_bin) if (element != decode_bin->typefind && element != decode_bin->fakesink) { GST_DEBUG_OBJECT (element, "removing autoplugged element"); g_signal_handlers_disconnect_by_func (element, unlinked, decode_bin); + gst_element_set_state (element, GST_STATE_NULL); gst_bin_remove (GST_BIN (decode_bin), element); } gst_object_unref (element); @@ -1472,8 +1473,8 @@ gst_decode_bin_change_state (GstElement * element, GstStateChange transition) switch (transition) { case GST_STATE_CHANGE_PLAYING_TO_PAUSED: - case GST_STATE_CHANGE_PAUSED_TO_READY: break; + case GST_STATE_CHANGE_PAUSED_TO_READY: case GST_STATE_CHANGE_READY_TO_NULL: free_dynamics (decode_bin); free_pad_probes (decode_bin);