From: Peter Kjellerstedt Date: Wed, 9 Apr 2008 22:27:50 +0000 (+0000) Subject: gst/rtpmanager/: Avoid leaking pads in the RTP manager. X-Git-Tag: 1.19.3~507^2~20326 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fbc2a12aa59eaf3bd8f02eb0fb01929e25580e70;p=platform%2Fupstream%2Fgstreamer.git 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. --- diff --git a/ChangeLog b/ChangeLog index de536dc4eb..e4645c44f5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-04-10 Peter Kjellerstedt + + * gst/rtpmanager/gstrtpbin.c: (free_session): + * gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_finalize): + Avoid leaking pads in the RTP manager. + 2008-04-09 Jan Schmidt * gst/nsf/nes_apu.c: (apu_process): diff --git a/gst/rtpmanager/gstrtpbin.c b/gst/rtpmanager/gstrtpbin.c index 4f580f48ff..5f781d8c7f 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); diff --git a/gst/rtpmanager/gstrtpsession.c b/gst/rtpmanager/gstrtpsession.c index 6de1d3f349..3f7053d734 100644 --- a/gst/rtpmanager/gstrtpsession.c +++ b/gst/rtpmanager/gstrtpsession.c @@ -705,6 +705,15 @@ gst_rtp_session_finalize (GObject * object) rtpsession = GST_RTP_SESSION (object); + if (rtpsession->recv_rtp_sink != NULL) + gst_object_unref (rtpsession->recv_rtp_sink); + if (rtpsession->recv_rtcp_sink != NULL) + gst_object_unref (rtpsession->recv_rtcp_sink); + if (rtpsession->send_rtp_sink != NULL) + gst_object_unref (rtpsession->send_rtp_sink); + if (rtpsession->send_rtcp_src != NULL) + gst_object_unref (rtpsession->send_rtcp_src); + g_hash_table_destroy (rtpsession->priv->ptmap); g_mutex_free (rtpsession->priv->lock); g_object_unref (rtpsession->priv->session);