mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-18 20:25:25 +00:00
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:
parent
5cb4a14316
commit
a6395920c1
2 changed files with 19 additions and 6 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2008-11-21 Wim Taymans <wim.taymans@collabora.co.uk>
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
2008-11-21 Sebastian Dröge <sebastian.droege@collabora.co.uk>
|
2008-11-21 Sebastian Dröge <sebastian.droege@collabora.co.uk>
|
||||||
|
|
||||||
* gst/speexresample/gstspeexresample.c:
|
* gst/speexresample/gstspeexresample.c:
|
||||||
|
|
|
@ -2429,28 +2429,34 @@ gst_rtp_bin_release_pad (GstElement * element, GstPad * pad)
|
||||||
{
|
{
|
||||||
GstRtpBinSession *session;
|
GstRtpBinSession *session;
|
||||||
GstRtpBin *rtpbin;
|
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));
|
g_return_if_fail (GST_IS_RTP_BIN (element));
|
||||||
|
|
||||||
rtpbin = GST_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);
|
GST_RTP_BIN_LOCK (rtpbin);
|
||||||
if (!(session = find_session_by_pad (rtpbin, pad)))
|
if (!(session = find_session_by_pad (rtpbin, target)))
|
||||||
goto unknown_pad;
|
goto unknown_pad;
|
||||||
|
|
||||||
if (session->recv_rtp_sink == pad) {
|
if (session->recv_rtp_sink == target) {
|
||||||
remove_recv_rtp (rtpbin, session, pad);
|
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);
|
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);
|
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);
|
remove_rtcp (rtpbin, session, pad);
|
||||||
}
|
}
|
||||||
|
|
||||||
GST_RTP_BIN_UNLOCK (rtpbin);
|
GST_RTP_BIN_UNLOCK (rtpbin);
|
||||||
|
|
||||||
|
gst_object_unref (target);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* ERROR */
|
/* ERROR */
|
||||||
|
|
Loading…
Reference in a new issue