mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-10-07 11:12:17 +00:00
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.
This commit is contained in:
parent
4ab30e5583
commit
98d290b864
3 changed files with 31 additions and 4 deletions
|
@ -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>
|
2005-11-01 Edward Hervey <edward@fluendo.com>
|
||||||
|
|
||||||
* gst/wavenc/gstwavenc.c: (gst_wavenc_stop_file),
|
* gst/wavenc/gstwavenc.c: (gst_wavenc_stop_file),
|
||||||
|
|
|
@ -122,6 +122,7 @@ do_toggle_element (GstGConfAudioSink * sink)
|
||||||
/* kill old element */
|
/* kill old element */
|
||||||
if (sink->kid) {
|
if (sink->kid) {
|
||||||
GST_DEBUG_OBJECT (sink, "Removing old 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);
|
gst_bin_remove (GST_BIN (sink), sink->kid);
|
||||||
sink->kid = NULL;
|
sink->kid = NULL;
|
||||||
}
|
}
|
||||||
|
@ -156,6 +157,7 @@ static GstStateChangeReturn
|
||||||
gst_gconf_audio_sink_change_state (GstElement * element,
|
gst_gconf_audio_sink_change_state (GstElement * element,
|
||||||
GstStateChange transition)
|
GstStateChange transition)
|
||||||
{
|
{
|
||||||
|
GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
|
||||||
GstGConfAudioSink *sink = GST_GCONF_AUDIO_SINK (element);
|
GstGConfAudioSink *sink = GST_GCONF_AUDIO_SINK (element);
|
||||||
|
|
||||||
switch (transition) {
|
switch (transition) {
|
||||||
|
@ -163,6 +165,14 @@ gst_gconf_audio_sink_change_state (GstElement * element,
|
||||||
if (!do_toggle_element (sink))
|
if (!do_toggle_element (sink))
|
||||||
return GST_STATE_CHANGE_FAILURE;
|
return GST_STATE_CHANGE_FAILURE;
|
||||||
break;
|
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:
|
case GST_STATE_CHANGE_READY_TO_NULL:
|
||||||
gst_gconf_audio_sink_reset (sink);
|
gst_gconf_audio_sink_reset (sink);
|
||||||
break;
|
break;
|
||||||
|
@ -170,6 +180,5 @@ gst_gconf_audio_sink_change_state (GstElement * element,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return GST_CALL_PARENT_WITH_DEFAULT (GST_ELEMENT_CLASS, change_state,
|
return ret;
|
||||||
(element, transition), GST_STATE_CHANGE_SUCCESS);
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -122,6 +122,7 @@ do_toggle_element (GstGConfVideoSink * sink)
|
||||||
/* kill old element */
|
/* kill old element */
|
||||||
if (sink->kid) {
|
if (sink->kid) {
|
||||||
GST_DEBUG_OBJECT (sink, "Removing old 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);
|
gst_bin_remove (GST_BIN (sink), sink->kid);
|
||||||
sink->kid = NULL;
|
sink->kid = NULL;
|
||||||
}
|
}
|
||||||
|
@ -156,6 +157,7 @@ static GstStateChangeReturn
|
||||||
gst_gconf_video_sink_change_state (GstElement * element,
|
gst_gconf_video_sink_change_state (GstElement * element,
|
||||||
GstStateChange transition)
|
GstStateChange transition)
|
||||||
{
|
{
|
||||||
|
GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
|
||||||
GstGConfVideoSink *sink = GST_GCONF_VIDEO_SINK (element);
|
GstGConfVideoSink *sink = GST_GCONF_VIDEO_SINK (element);
|
||||||
|
|
||||||
switch (transition) {
|
switch (transition) {
|
||||||
|
@ -163,6 +165,14 @@ gst_gconf_video_sink_change_state (GstElement * element,
|
||||||
if (!do_toggle_element (sink))
|
if (!do_toggle_element (sink))
|
||||||
return GST_STATE_CHANGE_FAILURE;
|
return GST_STATE_CHANGE_FAILURE;
|
||||||
break;
|
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:
|
case GST_STATE_CHANGE_READY_TO_NULL:
|
||||||
gst_gconf_video_sink_reset (sink);
|
gst_gconf_video_sink_reset (sink);
|
||||||
break;
|
break;
|
||||||
|
@ -170,6 +180,5 @@ gst_gconf_video_sink_change_state (GstElement * element,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return GST_CALL_PARENT_WITH_DEFAULT (GST_ELEMENT_CLASS, change_state,
|
return ret;
|
||||||
(element, transition), GST_STATE_CHANGE_SUCCESS);
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue