gst/playback/gstdecodebin.c: Make decodebin reusable when going from PAUSE_TO_READY and then back to PAUSED.

Original commit message from CVS:
2006-05-15  Julien MOUTTE  <julien@moutte.net>

* 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.
This commit is contained in:
Julien Moutte 2006-05-15 17:01:02 +00:00
parent ddf3ac792c
commit 2e02bce5f0
2 changed files with 9 additions and 1 deletions

View file

@ -1,3 +1,10 @@
2006-05-15 Julien MOUTTE <julien@moutte.net>
* 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 <wim@fluendo.com> 2006-05-15 Wim Taymans <wim@fluendo.com>
* ext/vorbis/vorbisdec.c: (vorbis_get_query_types), * ext/vorbis/vorbisdec.c: (vorbis_get_query_types),

View file

@ -1386,6 +1386,7 @@ cleanup_decodebin (GstDecodeBin * decode_bin)
if (element != decode_bin->typefind && element != decode_bin->fakesink) { if (element != decode_bin->typefind && element != decode_bin->fakesink) {
GST_DEBUG_OBJECT (element, "removing autoplugged element"); GST_DEBUG_OBJECT (element, "removing autoplugged element");
g_signal_handlers_disconnect_by_func (element, unlinked, decode_bin); 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_bin_remove (GST_BIN (decode_bin), element);
} }
gst_object_unref (element); gst_object_unref (element);
@ -1472,8 +1473,8 @@ gst_decode_bin_change_state (GstElement * element, GstStateChange transition)
switch (transition) { switch (transition) {
case GST_STATE_CHANGE_PLAYING_TO_PAUSED: case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
case GST_STATE_CHANGE_PAUSED_TO_READY:
break; break;
case GST_STATE_CHANGE_PAUSED_TO_READY:
case GST_STATE_CHANGE_READY_TO_NULL: case GST_STATE_CHANGE_READY_TO_NULL:
free_dynamics (decode_bin); free_dynamics (decode_bin);
free_pad_probes (decode_bin); free_pad_probes (decode_bin);