diff options
author | Tim-Philipp Müller <tim@centricular.net> | 2005-11-02 19:42:38 +0000 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.net> | 2005-11-02 19:42:38 +0000 |
commit | 98d290b8641696b76f89d8b788da7e067d34a88f (patch) | |
tree | 80fac533f3b30fc7db590ca40687d11fb3cba1dc /ext/gconf/gstgconfvideosink.c | |
parent | 4ab30e5583cfb1804b7b5dc847576746a22d50af (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/gstgconfvideosink.c')
-rw-r--r-- | ext/gconf/gstgconfvideosink.c | 13 |
1 files changed, 11 insertions, 2 deletions
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; } |