summaryrefslogtreecommitdiffstats
path: root/gst/rtpmanager/gstrtpbin.c
diff options
context:
space:
mode:
authorPeter Kjellerstedt <pkj@axis.com>2008-04-09 22:27:50 +0000
committerPeter Kjellerstedt <pkj@axis.com>2008-04-09 22:27:50 +0000
commitfbc2a12aa59eaf3bd8f02eb0fb01929e25580e70 (patch)
treef6eff732b8bbb68700a94168a0f2555f137cd1d6 /gst/rtpmanager/gstrtpbin.c
parentad302618b6dfacfcf675456f2e6952f25f222eae (diff)
downloadgst-plugins-bad-fbc2a12aa59eaf3bd8f02eb0fb01929e25580e70.tar.gz
gst-plugins-bad-fbc2a12aa59eaf3bd8f02eb0fb01929e25580e70.tar.bz2
gst-plugins-bad-fbc2a12aa59eaf3bd8f02eb0fb01929e25580e70.zip
gst/rtpmanager/: Avoid leaking pads in the RTP manager.
Original commit message from CVS: * gst/rtpmanager/gstrtpbin.c: (free_session): * gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_finalize): Avoid leaking pads in the RTP manager.
Diffstat (limited to 'gst/rtpmanager/gstrtpbin.c')
-rw-r--r--gst/rtpmanager/gstrtpbin.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/gst/rtpmanager/gstrtpbin.c b/gst/rtpmanager/gstrtpbin.c
index 4f580f48..5f781d8c 100644
--- a/gst/rtpmanager/gstrtpbin.c
+++ b/gst/rtpmanager/gstrtpbin.c
@@ -524,6 +524,21 @@ free_session (GstRtpBinSession * sess)
gst_element_set_state (sess->session, GST_STATE_NULL);
gst_element_set_state (sess->demux, GST_STATE_NULL);
+ if (sess->recv_rtp_sink != NULL)
+ gst_element_release_request_pad (sess->session, sess->recv_rtp_sink);
+ if (sess->recv_rtp_src != NULL)
+ gst_object_unref (sess->recv_rtp_src);
+ if (sess->recv_rtcp_sink != NULL)
+ gst_element_release_request_pad (sess->session, sess->recv_rtcp_sink);
+ if (sess->sync_src != NULL)
+ gst_object_unref (sess->sync_src);
+ if (sess->send_rtp_sink != NULL)
+ gst_element_release_request_pad (sess->session, sess->send_rtp_sink);
+ if (sess->send_rtp_src != NULL)
+ gst_object_unref (sess->send_rtp_src);
+ if (sess->send_rtcp_src != NULL)
+ gst_element_release_request_pad (sess->session, sess->send_rtcp_src);
+
gst_bin_remove (GST_BIN_CAST (bin), sess->session);
gst_bin_remove (GST_BIN_CAST (bin), sess->demux);