aggregator: Always lock aggpad around update_time_level

`aggpad->segment` is protected by the `aggpad`'s object lock. We need to
take the lock before calling `update_time_level`.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/611>
This commit is contained in:
Jan Alexander Steffens (heftig) 2020-09-02 17:59:30 +02:00
parent 53707dc014
commit 08d4b0051a

View file

@ -1636,7 +1636,7 @@ gst_aggregator_flush_start (GstAggregator * self, GstAggregatorPad * aggpad,
PAD_FLUSH_UNLOCK (aggpad);
}
/* Must be called with the the PAD_LOCK held */
/* Must be called with the PAD_LOCK and OBJECT_LOCK held */
static void
update_time_level (GstAggregatorPad * aggpad, gboolean head)
{
@ -3101,7 +3101,9 @@ apply_buffer (GstAggregatorPad * aggpad, GstBuffer * buffer, gboolean head)
else
aggpad->priv->tail_position = timestamp;
GST_OBJECT_LOCK (aggpad);
update_time_level (aggpad, head);
GST_OBJECT_UNLOCK (aggpad);
}
/*