gst/rtpmanager/rtpsession.c: Unlock the session lock when calling one of our callbacks.

Original commit message from CVS:
Patch by: Olivier Crete <tester at tester dot ca>
* gst/rtpmanager/rtpsession.c: (source_clock_rate),
(rtp_session_process_bye), (rtp_session_send_bye_locked):
Unlock the session lock when calling one of our callbacks.
Fixes #532011.
This commit is contained in:
Olivier Crete 2008-05-08 09:43:33 +00:00 committed by Wim Taymans
parent 08b3343e6b
commit f32cbe5017
2 changed files with 17 additions and 0 deletions

View file

@ -1,3 +1,12 @@
2008-05-08 Wim Taymans <wim.taymans@collabora.co.uk>
Patch by: Olivier Crete <tester at tester dot ca>
* gst/rtpmanager/rtpsession.c: (source_clock_rate),
(rtp_session_process_bye), (rtp_session_send_bye_locked):
Unlock the session lock when calling one of our callbacks.
Fixes #532011.
2008-05-08 Sebastian Dröge <slomo@circular-chaos.org> 2008-05-08 Sebastian Dröge <slomo@circular-chaos.org>
Patch by: Sjoerd Simons <sjoerd at luon dot net> Patch by: Sjoerd Simons <sjoerd at luon dot net>

View file

@ -844,6 +844,8 @@ source_clock_rate (RTPSource * source, guint8 pt, RTPSession * session)
{ {
gint result; gint result;
RTP_SESSION_UNLOCK (session);
if (session->callbacks.clock_rate) if (session->callbacks.clock_rate)
result = result =
session->callbacks.clock_rate (session, pt, session->callbacks.clock_rate (session, pt,
@ -851,6 +853,8 @@ source_clock_rate (RTPSource * source, guint8 pt, RTPSession * session)
else else
result = -1; result = -1;
RTP_SESSION_LOCK (session);
GST_DEBUG ("got clock-rate %d for pt %d", result, pt); GST_DEBUG ("got clock-rate %d for pt %d", result, pt);
return result; return result;
@ -1608,9 +1612,11 @@ rtp_session_process_bye (RTPSession * sess, GstRTCPPacket * packet,
sess->next_rtcp_check_time += arrival->time; sess->next_rtcp_check_time += arrival->time;
RTP_SESSION_UNLOCK (sess);
/* notify app of reconsideration */ /* notify app of reconsideration */
if (sess->callbacks.reconsider) if (sess->callbacks.reconsider)
sess->callbacks.reconsider (sess, sess->reconsider_user_data); sess->callbacks.reconsider (sess, sess->reconsider_user_data);
RTP_SESSION_LOCK (sess);
} }
} }
@ -1866,9 +1872,11 @@ rtp_session_send_bye_locked (RTPSession * sess, const gchar * reason)
GST_DEBUG ("Schedule BYE for %" GST_TIME_FORMAT ", %" GST_TIME_FORMAT, GST_DEBUG ("Schedule BYE for %" GST_TIME_FORMAT ", %" GST_TIME_FORMAT,
GST_TIME_ARGS (interval), GST_TIME_ARGS (sess->next_rtcp_check_time)); GST_TIME_ARGS (interval), GST_TIME_ARGS (sess->next_rtcp_check_time));
RTP_SESSION_UNLOCK (sess);
/* notify app of reconsideration */ /* notify app of reconsideration */
if (sess->callbacks.reconsider) if (sess->callbacks.reconsider)
sess->callbacks.reconsider (sess, sess->reconsider_user_data); sess->callbacks.reconsider (sess, sess->reconsider_user_data);
RTP_SESSION_LOCK (sess);
done: done:
return result; return result;