summaryrefslogtreecommitdiffstats
path: root/gst/rtpmanager
diff options
context:
space:
mode:
authorHavard Graff <havard.graff@tandberg.com>2009-08-31 18:46:51 +0200
committerWim Taymans <wim.taymans@collabora.co.uk>2009-09-08 12:41:52 +0200
commite08e610db0d5e9f7e4d5d5c42b026b2853b1321d (patch)
tree2d75956d7fcf614575bbf09f82dd094da4572b70 /gst/rtpmanager
parent796dec59209445cd9a19f1bd5844bb3b5e419d60 (diff)
rtpbin: use locked state on internal bins
Set the locked state on internal elements to make sure that they don't change back to another state when shutting down. Fixes #594248
Diffstat (limited to 'gst/rtpmanager')
-rw-r--r--gst/rtpmanager/gstrtpbin.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gst/rtpmanager/gstrtpbin.c b/gst/rtpmanager/gstrtpbin.c
index 0c00e5c8..d5448147 100644
--- a/gst/rtpmanager/gstrtpbin.c
+++ b/gst/rtpmanager/gstrtpbin.c
@@ -577,6 +577,9 @@ free_session (GstRtpBinSession * sess, GstRtpBin * bin)
{
GST_DEBUG_OBJECT (bin, "freeing session %p", sess);
+ gst_element_set_locked_state (sess->demux, TRUE);
+ gst_element_set_locked_state (sess->session, TRUE);
+
gst_element_set_state (sess->demux, GST_STATE_NULL);
gst_element_set_state (sess->session, GST_STATE_NULL);
@@ -1160,6 +1163,9 @@ free_stream (GstRtpBinStream * stream)
g_signal_handler_disconnect (stream->buffer, stream->buffer_ptreq_sig);
g_signal_handler_disconnect (stream->buffer, stream->buffer_ntpstop_sig);
+ gst_element_set_locked_state (stream->demux, TRUE);
+ gst_element_set_locked_state (stream->buffer, TRUE);
+
gst_element_set_state (stream->demux, GST_STATE_NULL);
gst_element_set_state (stream->buffer, GST_STATE_NULL);