gst/rtpmanager/gstrtpbin.c: Release the right pads on rtpbin. Fixes #561752.

Original commit message from CVS:
Patch by: Olivier Crete <tester at tester dot ca>
* gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_release_pad):
Release the right pads on rtpbin. Fixes #561752.
This commit is contained in:
Olivier Crete 2008-11-21 16:17:22 +00:00 committed by Tim-Philipp Müller
parent 2f5b130af3
commit 75580396d9

View file

@ -2429,28 +2429,34 @@ gst_rtp_bin_release_pad (GstElement * element, GstPad * pad)
{
GstRtpBinSession *session;
GstRtpBin *rtpbin;
GstPad *target = NULL;
g_return_if_fail (GST_IS_PAD (pad));
g_return_if_fail (GST_IS_GHOST_PAD (pad));
g_return_if_fail (GST_IS_RTP_BIN (element));
rtpbin = GST_RTP_BIN (element);
target = gst_ghost_pad_get_target (GST_GHOST_PAD (pad));
g_return_if_fail (target);
GST_RTP_BIN_LOCK (rtpbin);
if (!(session = find_session_by_pad (rtpbin, pad)))
if (!(session = find_session_by_pad (rtpbin, target)))
goto unknown_pad;
if (session->recv_rtp_sink == pad) {
if (session->recv_rtp_sink == target) {
remove_recv_rtp (rtpbin, session, pad);
} else if (session->recv_rtcp_sink == pad) {
} else if (session->recv_rtcp_sink == target) {
remove_recv_rtcp (rtpbin, session, pad);
} else if (session->send_rtp_sink == pad) {
} else if (session->send_rtp_sink == target) {
remove_send_rtp (rtpbin, session, pad);
} else if (session->send_rtcp_src == pad) {
} else if (session->send_rtcp_src == target) {
remove_rtcp (rtpbin, session, pad);
}
GST_RTP_BIN_UNLOCK (rtpbin);
gst_object_unref (target);
return;
/* ERROR */