Commit 56e63b44 authored by Tommi Myöhänen's avatar Tommi Myöhänen Committed by Wim Taymans
Browse files

gst/rtsp/gstrtspsrc.c: Fix race when pausing a RTSP stream in interleaved.

Original commit message from CVS:
Patch by: Tommi Myöhänen  <ext-tommi dot myohanen at nokia dot com>
* gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_loop_interleaved):
Fix race when pausing a RTSP stream in interleaved.
Fixes #475784.
parent 68bf754d
2007-10-22 Wim Taymans <wim.taymans@gmail.com>
Patch by: Tommi Myöhänen <ext-tommi dot myohanen at nokia dot com>
* gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_loop_interleaved):
Fix race when pausing a RTSP stream in interleaved.
Fixes #475784.
2007-10-22 Wim Taymans <wim.taymans@gmail.com>
 
Patch by: Peter Kjellerstedt <pkj at axis com>
......
......@@ -2459,9 +2459,21 @@ gst_rtspsrc_loop_interleaved (GstRTSPSrc * src)
GST_DEBUG_OBJECT (src, "doing receive");
/* We need to check if playback has been paused while we have been
* doing something else in our own GstTask (e.g. pushing buffer). There
* is a slight chance that we have just received data buffer when PAUSE
* state change happens (in another thread). In this case we well be
* totally ignorant of that unless we explicitly check it here. */
GST_RTSP_STATE_LOCK (src);
if (src->state == GST_RTSP_STATE_READY) {
/* We are looping in a paused mode */
GST_RTSP_STATE_UNLOCK (src);
goto already_paused;
}
/* protect the connection with the connection lock so that we can see when
* we are finished doing server communication */
res = gst_rtspsrc_connection_receive (src, &message, src->ptcp_timeout);
GST_RTSP_STATE_UNLOCK (src);
switch (res) {
case GST_RTSP_OK:
......@@ -2634,6 +2646,11 @@ interrupt:
gst_rtsp_connection_flush (src->connection, FALSE);
return GST_FLOW_WRONG_STATE;
}
already_paused:
{
GST_DEBUG_OBJECT (src, "got interrupted: playback already paused");
return GST_FLOW_WRONG_STATE;
}
receive_error:
{
gchar *str = gst_rtsp_strresult (res);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment