mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-08 00:59:48 +00:00
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.
This commit is contained in:
parent
3f58847080
commit
959c341cbd
2 changed files with 24 additions and 0 deletions
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue