discoverer: Set 'processing = FALSE' when done discovering SYNC
authorThibault Saunier <tsaunier@gnome.org>
Fri, 15 Aug 2014 11:31:53 +0000 (13:31 +0200)
committerThibault Saunier <tsaunier@gnome.org>
Fri, 15 Aug 2014 11:40:17 +0000 (13:40 +0200)
This avoids a race where we would get new tag but we are already
prerolled and analyzing results.

It is the way it is supposed to be handled as stated in comment:
"If preroll is complete, drop these tags - the collected information is
possibly already being processed and adding more tags would be racy"

gst-libs/gst/pbutils/gstdiscoverer.c

index da650f3..244b374 100644 (file)
@@ -1462,6 +1462,11 @@ handle_current_sync (GstDiscoverer * dc)
     dc->priv->current_info->result = GST_DISCOVERER_TIMEOUT;
   }
 
+  DISCO_LOCK (dc);
+  dc->priv->processing = FALSE;
+  DISCO_UNLOCK (dc);
+
+
   GST_DEBUG ("Done");
 
   g_timer_stop (timer);