diff options
author | Sebastian Pölsterl <sebp@k-d-w.org> | 2009-10-09 23:08:18 +0200 |
---|---|---|
committer | Wim Taymans <wim.taymans@collabora.co.uk> | 2009-10-13 10:57:31 +0200 |
commit | f8630c6c816007de43c6c0d701aabbb657c76877 (patch) | |
tree | 5d614cc28278baeb169846359cdb026491a7c783 | |
parent | 7d38b37ae6fec20fdc441aaea0920089c0497e47 (diff) |
media: Fixed crasher where caps got unref'ed too often
-rw-r--r-- | gst/rtsp-server/rtsp-media.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gst/rtsp-server/rtsp-media.c b/gst/rtsp-server/rtsp-media.c index 046e3d5..fe79296 100644 --- a/gst/rtsp-server/rtsp-media.c +++ b/gst/rtsp-server/rtsp-media.c @@ -1569,6 +1569,8 @@ gst_rtsp_media_remove_elements (GstRTSPMedia *media) gst_pad_unlink (stream->srcpad, stream->send_rtp_sink); + g_signal_handler_disconnect (stream->send_rtp_sink, stream->caps_sig); + for (j = 0; j < 2; j++) { gst_element_set_state (stream->udpsrc[j], GST_STATE_NULL); gst_element_set_state (stream->udpsink[j], GST_STATE_NULL); @@ -1584,11 +1586,13 @@ gst_rtsp_media_remove_elements (GstRTSPMedia *media) gst_bin_remove (GST_BIN (media->pipeline), stream->tee[j]); gst_bin_remove (GST_BIN (media->pipeline), stream->selector[j]); } + if (stream->caps) + gst_caps_unref (stream->caps); stream->caps = NULL; gst_rtsp_media_stream_free (stream); } g_array_remove_range (media->streams, 0, media->streams->len); - + gst_element_set_state (media->rtpbin, GST_STATE_NULL); gst_bin_remove (GST_BIN (media->pipeline), media->rtpbin); |