rtpbin: use locked state on internal bins
authorHavard Graff <havard.graff@tandberg.com>
Mon, 31 Aug 2009 16:46:51 +0000 (18:46 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Tue, 8 Sep 2009 10:41:52 +0000 (12:41 +0200)
Set the locked state on internal elements to make sure that they don't change
back to another state when shutting down.

Fixes #594248

gst/rtpmanager/gstrtpbin.c

index 0c00e5c..d544814 100644 (file)
@@ -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);