aggregator: take the pad lock around queue gap event removal
authorMatthew Waters <matthew@centricular.com>
Thu, 21 Mar 2019 07:47:04 +0000 (18:47 +1100)
committerMatthew Waters <matthew@centricular.com>
Thu, 21 Mar 2019 08:18:46 +0000 (19:18 +1100)
As is done for every other queue interaction

libs/gst/base/gstaggregator.c

index 7fff0f7..bc8c05f 100644 (file)
@@ -1499,8 +1499,10 @@ gst_aggregator_default_sink_event (GstAggregator * self,
       GST_BUFFER_FLAG_SET (gapbuf, GST_BUFFER_FLAG_DROPPABLE);
 
       /* Remove GAP event so we can replace it with the buffer */
+      PAD_LOCK (aggpad);
       if (g_queue_peek_tail (&aggpad->priv->data) == event)
         gst_event_unref (g_queue_pop_tail (&aggpad->priv->data));
+      PAD_UNLOCK (aggpad);
 
       if (gst_aggregator_pad_chain_internal (self, aggpad, gapbuf, FALSE) !=
           GST_FLOW_OK) {