From f8630c6c816007de43c6c0d701aabbb657c76877 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20P=C3=B6lsterl?= Date: Fri, 9 Oct 2009 23:08:18 +0200 Subject: [PATCH] media: Fixed crasher where caps got unref'ed too often --- gst/rtsp-server/rtsp-media.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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); -- 2.7.4