adaptivedemux: Don't hold locks when pushing FLUSH_START
authorEdward Hervey <edward@centricular.com>
Fri, 14 Apr 2017 16:16:28 +0000 (18:16 +0200)
committerEdward Hervey <bilboed@bilboed.com>
Sat, 15 Apr 2017 06:18:39 +0000 (08:18 +0200)
commite00be2758528eb4ddb326efe4c261ce3b776a6e5
tree17a3826af8ce52f40e376081a7053bfc71b2e6c5
parent44ec6bb2f3a32db06d4b6c0d28057c93dbed1304
adaptivedemux: Don't hold locks when pushing FLUSH_START

Some actions (Qos, reconfigure, ...) might take place before we finish pushing out flush_start.

One problem would be that:
1) The QOS handling in adaptivedemux takes the MANIFEST LOCK
  That QOS event comes from basesink with its PREROLL_LOCK taken
2) FLUSH_START is sent from adaptivedemux with the MANIFEST_LOCK taken and the basesink flushing handler needs to take the PREROLL_LOCK

 => deadlock

https://bugzilla.gnome.org/show_bug.cgi?id=781320
gst-libs/gst/adaptivedemux/gstadaptivedemux.c