gst/base/gstbasetransform.c: Hold STREAM_LOCK while pushing newsegment or tag events...
authorTim-Philipp Müller <tim@centricular.net>
Tue, 8 Nov 2005 12:33:09 +0000 (12:33 +0000)
committerTim-Philipp Müller <tim@centricular.net>
Tue, 8 Nov 2005 12:33:09 +0000 (12:33 +0000)
Original commit message from CVS:
* gst/base/gstbasetransform.c: (gst_base_transform_event):
Hold STREAM_LOCK while pushing newsegment or tag events as well.

ChangeLog
gst/base/gstbasetransform.c
libs/gst/base/gstbasetransform.c

index 4002959..2b6cf26 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2005-11-08  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gst/base/gstbasetransform.c: (gst_base_transform_event):
+         Hold STREAM_LOCK while pushing newsegment or tag events as well.
+
 2005-11-08  Wim Taymans  <wim@fluendo.com>
 
        * gst/base/gstbasesink.c: (gst_base_sink_preroll_queue_empty),
index 29e03da..0bc1a08 100644 (file)
@@ -1027,6 +1027,10 @@ gst_base_transform_event (GstPad * pad, GstEvent * event)
       GST_STREAM_LOCK (pad);
       unlock = TRUE;
       break;
+    case GST_EVENT_TAG:
+      GST_STREAM_LOCK (pad);
+      unlock = TRUE;
+      break;
     case GST_EVENT_NEWSEGMENT:
     {
       GstFormat format;
@@ -1035,6 +1039,7 @@ gst_base_transform_event (GstPad * pad, GstEvent * event)
       gboolean update;
 
       GST_STREAM_LOCK (pad);
+      unlock = TRUE;
       gst_event_parse_newsegment (event, &update, &rate, &format, &start, &stop,
           &time);
       if (format == GST_FORMAT_TIME) {
@@ -1050,7 +1055,6 @@ gst_base_transform_event (GstPad * pad, GstEvent * event)
         GST_DEBUG_OBJECT (trans,
             "received NEW_SEGMENT in non-time format, ignoring");
       }
-      GST_STREAM_UNLOCK (pad);
       break;
     }
     default:
index 29e03da..0bc1a08 100644 (file)
@@ -1027,6 +1027,10 @@ gst_base_transform_event (GstPad * pad, GstEvent * event)
       GST_STREAM_LOCK (pad);
       unlock = TRUE;
       break;
+    case GST_EVENT_TAG:
+      GST_STREAM_LOCK (pad);
+      unlock = TRUE;
+      break;
     case GST_EVENT_NEWSEGMENT:
     {
       GstFormat format;
@@ -1035,6 +1039,7 @@ gst_base_transform_event (GstPad * pad, GstEvent * event)
       gboolean update;
 
       GST_STREAM_LOCK (pad);
+      unlock = TRUE;
       gst_event_parse_newsegment (event, &update, &rate, &format, &start, &stop,
           &time);
       if (format == GST_FORMAT_TIME) {
@@ -1050,7 +1055,6 @@ gst_base_transform_event (GstPad * pad, GstEvent * event)
         GST_DEBUG_OBJECT (trans,
             "received NEW_SEGMENT in non-time format, ignoring");
       }
-      GST_STREAM_UNLOCK (pad);
       break;
     }
     default: