summaryrefslogtreecommitdiffstats
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
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.
-rw-r--r--ChangeLog9
-rw-r--r--ext/gconf/gstgconfaudiosink.c13
-rw-r--r--ext/gconf/gstgconfvideosink.c13
3 files changed, 31 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index f411145a..5ce600a9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2005-11-02 Tim-Philipp Müller <tim at centricular dot net>
+
+ * 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.
+
2005-11-01 Edward Hervey <edward@fluendo.com>
* gst/wavenc/gstwavenc.c: (gst_wavenc_stop_file),
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;
}
diff --git a/ext/gconf/gstgconfvideosink.c b/ext/gconf/gstgconfvideosink.c
index f1f7eff8..abfbd964 100644
--- a/ext/gconf/gstgconfvideosink.c
+++ b/ext/gconf/gstgconfvideosink.c
@@ -122,6 +122,7 @@ do_toggle_element (GstGConfVideoSink * 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_video_sink_change_state (GstElement * element,
GstStateChange transition)
{
+ GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
GstGConfVideoSink *sink = GST_GCONF_VIDEO_SINK (element);
switch (transition) {
@@ -163,6 +165,14 @@ gst_gconf_video_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_video_sink_reset (sink);
break;
@@ -170,6 +180,5 @@ gst_gconf_video_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;
}