gst/rtpmanager/rtpsession.c: Unlock the session lock when calling one of our callbacks.
authorOlivier Crete <tester@tester.ca>
Thu, 8 May 2008 09:43:33 +0000 (09:43 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Thu, 8 May 2008 09:43:33 +0000 (09:43 +0000)
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.

ChangeLog
gst/rtpmanager/rtpsession.c

index 4dccd1f..d8aba84 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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>
 
        Patch by: Sjoerd Simons <sjoerd at luon dot net>
index 7ddcfe4..b6ca39c 100644 (file)
@@ -844,6 +844,8 @@ source_clock_rate (RTPSource * source, guint8 pt, RTPSession * session)
 {
   gint result;
 
+  RTP_SESSION_UNLOCK (session);
+
   if (session->callbacks.clock_rate)
     result =
         session->callbacks.clock_rate (session, pt,
@@ -851,6 +853,8 @@ source_clock_rate (RTPSource * source, guint8 pt, RTPSession * session)
   else
     result = -1;
 
+  RTP_SESSION_LOCK (session);
+
   GST_DEBUG ("got clock-rate %d for pt %d", result, pt);
 
   return result;
@@ -1608,9 +1612,11 @@ rtp_session_process_bye (RTPSession * sess, GstRTCPPacket * packet,
 
         sess->next_rtcp_check_time += arrival->time;
 
+        RTP_SESSION_UNLOCK (sess);
         /* notify app of reconsideration */
         if (sess->callbacks.reconsider)
           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_TIME_ARGS (interval), GST_TIME_ARGS (sess->next_rtcp_check_time));
 
+  RTP_SESSION_UNLOCK (sess);
   /* notify app of reconsideration */
   if (sess->callbacks.reconsider)
     sess->callbacks.reconsider (sess, sess->reconsider_user_data);
+  RTP_SESSION_LOCK (sess);
 done:
 
   return result;