rtspconnection: Empty queue when flush.

Empty the watchs queue when calling
gst_rtsp_watch_set_flushing with flushing variabel is TRUE.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=728772
This commit is contained in:
Göran Jönsson 2014-04-23 08:06:36 +02:00 committed by Wim Taymans
parent 6750531504
commit 9685e7a583

View file

@ -3807,7 +3807,7 @@ timeout:
* *
* When @flushing is %TRUE, abort a call to gst_rtsp_watch_wait_backlog() * When @flushing is %TRUE, abort a call to gst_rtsp_watch_wait_backlog()
* and make sure gst_rtsp_watch_write_data() returns immediately with * and make sure gst_rtsp_watch_write_data() returns immediately with
* #GST_RTSP_EINTR. * #GST_RTSP_EINTR. And empty the queue.
* *
* Since: 1.4 * Since: 1.4
*/ */
@ -3819,5 +3819,9 @@ gst_rtsp_watch_set_flushing (GstRTSPWatch * watch, gboolean flushing)
g_mutex_lock (&watch->mutex); g_mutex_lock (&watch->mutex);
watch->flushing = flushing; watch->flushing = flushing;
g_cond_signal (&watch->queue_not_full); g_cond_signal (&watch->queue_not_full);
if (flushing == TRUE) {
g_queue_foreach (watch->messages, (GFunc) gst_rtsp_rec_free, NULL);
g_queue_clear (watch->messages);
}
g_mutex_unlock (&watch->mutex); g_mutex_unlock (&watch->mutex);
} }