oggdemux: Return FLUSHING if pad if flushing
authorOlivier Crête <olivier.crete@collabora.com>
Thu, 30 Jul 2015 22:43:19 +0000 (18:43 -0400)
committerOlivier Crête <olivier.crete@collabora.com>
Thu, 30 Jul 2015 22:43:19 +0000 (18:43 -0400)
If the initial seek fails because the pad is
flushing, then return GST_FLOW_FLUSHING instead
of an error.

ext/ogg/gstoggdemux.c

index b758934..3042fca 100644 (file)
@@ -4778,9 +4778,18 @@ chain_read_failed:
   }
 seek_failed:
   {
-    GST_ELEMENT_ERROR (ogg, STREAM, DEMUX, (NULL),
-        ("failed to start demuxing ogg"));
-    ret = GST_FLOW_ERROR;
+    gboolean flushing;
+
+    GST_OBJECT_LOCK (pad);
+    flushing = GST_PAD_IS_FLUSHING (pad);
+    GST_OBJECT_UNLOCK (pad);
+    if (flushing) {
+      ret = GST_FLOW_FLUSHING;
+    } else {
+      GST_ELEMENT_ERROR (ogg, STREAM, DEMUX, (NULL),
+          ("failed to start demuxing ogg"));
+      ret = GST_FLOW_ERROR;
+    }
     goto pause;
   }
 pause: