We also only unlock it once, and otherwise have it locked forever from
this thread, causing deadlocks on shutdown later.
/* If no data is coming and we receive serialized event, need to forward all sticky events.
* Otherwise downstream has an inconsistent set of sticky events when
* handling the new event. */
- unlock = TRUE;
- GST_PAD_STREAM_LOCK (funnel->srcpad);
+ if (!unlock) {
+ unlock = TRUE;
+ GST_PAD_STREAM_LOCK (funnel->srcpad);
+ }
if ((funnel->last_sinkpad == NULL) || (funnel->forward_sticky_events
&& (funnel->last_sinkpad != pad))) {