hlsdemux: properly stop tasks by stopping fragment download
authorThiago Santos <ts.santos@sisa.samsung.com>
Fri, 25 Apr 2014 15:55:54 +0000 (12:55 -0300)
committerThiago Santos <ts.santos@sisa.samsung.com>
Tue, 29 Apr 2014 21:49:15 +0000 (18:49 -0300)
Issue a signal to the fragment download cond to stop
the task earlier

ext/hls/gsthlsdemux.c

index 23e07e6..86db8bd 100644 (file)
@@ -675,6 +675,9 @@ gst_hls_demux_pause_tasks (GstHLSDemux * demux)
     demux->stop_stream_task = TRUE;
     g_cond_signal (&demux->download_cond);
     g_mutex_unlock (&demux->download_lock);
+    g_mutex_lock (&demux->fragment_download_lock);
+    g_cond_signal (&demux->fragment_download_cond);
+    g_mutex_unlock (&demux->fragment_download_lock);
     gst_task_pause (demux->stream_task);
   }
 }
@@ -1839,8 +1842,8 @@ gst_hls_demux_get_next_fragment (GstHLSDemux * demux,
   /* wait for the fragment to be completely downloaded */
   g_cond_wait (&demux->fragment_download_cond, &demux->fragment_download_lock);
 
-  g_mutex_unlock (&demux->fragment_download_lock);
   gst_element_set_state (demux->src, GST_STATE_READY);
+  g_mutex_unlock (&demux->fragment_download_lock);
 
   return TRUE;
 }