mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-09 16:02:59 +00:00
rtpsession: make iterate_internal_links MT-safe
This commit is contained in:
parent
11bcac7c90
commit
f8370bb2a8
1 changed files with 13 additions and 10 deletions
|
@ -1463,24 +1463,27 @@ gst_rtp_session_event_recv_rtp_src (GstPad * pad, GstEvent * event)
|
||||||
static GstIterator *
|
static GstIterator *
|
||||||
gst_rtp_session_iterate_internal_links (GstPad * pad)
|
gst_rtp_session_iterate_internal_links (GstPad * pad)
|
||||||
{
|
{
|
||||||
GstRtpSession *rtpsession;
|
GstRtpSession *rtpsession = GST_RTP_SESSION (gst_pad_get_parent (pad));
|
||||||
GstPad *otherpad = NULL;
|
GstPad *otherpad = NULL;
|
||||||
GstIterator *it;
|
GstIterator *it = NULL;
|
||||||
|
|
||||||
rtpsession = GST_RTP_SESSION (gst_pad_get_parent (pad));
|
|
||||||
|
|
||||||
|
GST_RTP_SESSION_LOCK (rtpsession);
|
||||||
if (pad == rtpsession->recv_rtp_src) {
|
if (pad == rtpsession->recv_rtp_src) {
|
||||||
otherpad = rtpsession->recv_rtp_sink;
|
otherpad = gst_object_ref (rtpsession->recv_rtp_sink);
|
||||||
} else if (pad == rtpsession->recv_rtp_sink) {
|
} else if (pad == rtpsession->recv_rtp_sink) {
|
||||||
otherpad = rtpsession->recv_rtp_src;
|
otherpad = gst_object_ref (rtpsession->recv_rtp_src);
|
||||||
} else if (pad == rtpsession->send_rtp_src) {
|
} else if (pad == rtpsession->send_rtp_src) {
|
||||||
otherpad = rtpsession->send_rtp_sink;
|
otherpad = gst_object_ref (rtpsession->send_rtp_sink);
|
||||||
} else if (pad == rtpsession->send_rtp_sink) {
|
} else if (pad == rtpsession->send_rtp_sink) {
|
||||||
otherpad = rtpsession->send_rtp_src;
|
otherpad = gst_object_ref (rtpsession->send_rtp_src);
|
||||||
}
|
}
|
||||||
|
GST_RTP_SESSION_UNLOCK (rtpsession);
|
||||||
|
|
||||||
|
if (otherpad) {
|
||||||
it = gst_iterator_new_single (GST_TYPE_PAD, otherpad,
|
it = gst_iterator_new_single (GST_TYPE_PAD, otherpad,
|
||||||
(GstCopyFunction) gst_object_ref, (GFreeFunc) gst_object_unref);
|
(GstCopyFunction) gst_object_ref, (GFreeFunc) gst_object_unref);
|
||||||
|
gst_object_unref (otherpad);
|
||||||
|
}
|
||||||
|
|
||||||
gst_object_unref (rtpsession);
|
gst_object_unref (rtpsession);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue