gst/base/gstbasesrc.c: Make sure we never call the create function is we got deactivated.
authorWim Taymans <wim.taymans@gmail.com>
Tue, 19 Jul 2005 13:43:50 +0000 (13:43 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Tue, 19 Jul 2005 13:43:50 +0000 (13:43 +0000)
Original commit message from CVS:
* gst/base/gstbasesrc.c: (gst_base_src_get_range):
Make sure we never call the create function is we
got deactivated.

ChangeLog
gst/base/gstbasesrc.c
libs/gst/base/gstbasesrc.c

index d63ca88..4f76b28 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-07-19  Wim Taymans  <wim@fluendo.com>
+
+       * gst/base/gstbasesrc.c: (gst_base_src_get_range):
+       Make sure we never call the create function is we
+       got deactivated.
+
 2005-07-19  Andy Wingo  <wingo@pobox.com>
 
        * gst/parse/parse.l: Attempt to solve bug #172815.
index 4bc70da..6d830d3 100644 (file)
@@ -577,6 +577,11 @@ gst_base_src_get_range (GstPad * pad, guint64 offset, guint length,
   }
   GST_LIVE_UNLOCK (src);
 
+  GST_LOCK (pad);
+  if (GST_PAD_IS_FLUSHING (pad))
+    goto flushing;
+  GST_UNLOCK (pad);
+
   if (!GST_FLAG_IS_SET (src, GST_BASE_SRC_STARTED))
     goto not_started;
 
@@ -612,6 +617,12 @@ gst_base_src_get_range (GstPad * pad, guint64 offset, guint length,
   return ret;
 
   /* ERROR */
+flushing:
+  {
+    GST_DEBUG_OBJECT (src, "pad is flushing");
+    GST_UNLOCK (pad);
+    return GST_FLOW_WRONG_STATE;
+  }
 not_started:
   {
     GST_DEBUG_OBJECT (src, "getrange but not started");
index 4bc70da..6d830d3 100644 (file)
@@ -577,6 +577,11 @@ gst_base_src_get_range (GstPad * pad, guint64 offset, guint length,
   }
   GST_LIVE_UNLOCK (src);
 
+  GST_LOCK (pad);
+  if (GST_PAD_IS_FLUSHING (pad))
+    goto flushing;
+  GST_UNLOCK (pad);
+
   if (!GST_FLAG_IS_SET (src, GST_BASE_SRC_STARTED))
     goto not_started;
 
@@ -612,6 +617,12 @@ gst_base_src_get_range (GstPad * pad, guint64 offset, guint length,
   return ret;
 
   /* ERROR */
+flushing:
+  {
+    GST_DEBUG_OBJECT (src, "pad is flushing");
+    GST_UNLOCK (pad);
+    return GST_FLOW_WRONG_STATE;
+  }
 not_started:
   {
     GST_DEBUG_OBJECT (src, "getrange but not started");