summaryrefslogtreecommitdiffstats
path: root/ext/gconf/gstgconfaudiosink.c
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.net>2005-11-02 19:42:38 +0000
committerTim-Philipp Müller <tim@centricular.net>2005-11-02 19:42:38 +0000
commit98d290b8641696b76f89d8b788da7e067d34a88f (patch)
tree80fac533f3b30fc7db590ca40687d11fb3cba1dc /ext/gconf/gstgconfaudiosink.c
parent4ab30e5583cfb1804b7b5dc847576746a22d50af (diff)
ext/gconf/: Fix state change functions here as well and set kid to NULL state before removing it.
Original commit message from CVS: * ext/gconf/gstgconfaudiosink.c: (do_toggle_element), (gst_gconf_audio_sink_change_state): * ext/gconf/gstgconfvideosink.c: (do_toggle_element), (gst_gconf_video_sink_change_state): Fix state change functions here as well and set kid to NULL state before removing it.
Diffstat (limited to 'ext/gconf/gstgconfaudiosink.c')
-rw-r--r--ext/gconf/gstgconfaudiosink.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/ext/gconf/gstgconfaudiosink.c b/ext/gconf/gstgconfaudiosink.c
index e849c7db..280c6d11 100644
--- a/ext/gconf/gstgconfaudiosink.c
+++ b/ext/gconf/gstgconfaudiosink.c
@@ -122,6 +122,7 @@ do_toggle_element (GstGConfAudioSink * sink)
/* kill old element */
if (sink->kid) {
GST_DEBUG_OBJECT (sink, "Removing old kid");
+ gst_element_set_state (sink->kid, GST_STATE_NULL);
gst_bin_remove (GST_BIN (sink), sink->kid);
sink->kid = NULL;
}
@@ -156,6 +157,7 @@ static GstStateChangeReturn
gst_gconf_audio_sink_change_state (GstElement * element,
GstStateChange transition)
{
+ GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
GstGConfAudioSink *sink = GST_GCONF_AUDIO_SINK (element);
switch (transition) {
@@ -163,6 +165,14 @@ gst_gconf_audio_sink_change_state (GstElement * element,
if (!do_toggle_element (sink))
return GST_STATE_CHANGE_FAILURE;
break;
+ default:
+ break;
+ }
+
+ ret = GST_CALL_PARENT_WITH_DEFAULT (GST_ELEMENT_CLASS, change_state,
+ (element, transition), GST_STATE_CHANGE_SUCCESS);
+
+ switch (transition) {
case GST_STATE_CHANGE_READY_TO_NULL:
gst_gconf_audio_sink_reset (sink);
break;
@@ -170,6 +180,5 @@ gst_gconf_audio_sink_change_state (GstElement * element,
break;
}
- return GST_CALL_PARENT_WITH_DEFAULT (GST_ELEMENT_CLASS, change_state,
- (element, transition), GST_STATE_CHANGE_SUCCESS);
+ return ret;
}