[vlc-devel] Handling deadlock between display:Open() and vout_window_ReportSize()

Rémi Denis-Courmont remi at remlab.net
Sun Dec 15 12:37:24 CET 2019


Le sunnuntaina 15. joulukuuta 2019, 13.20.43 EET Alexandre Janniaux a écrit :
> Hi,
> 
> After some thoughs, surveys of locks and schematics I might
> have a solution for allowing the vout_display::Open to block
> the main thread without additional lock.
> 
> It seems that I can just move the display creation outside of
> the display_lock, and then lock it to share it with sys while
> applying the pending requested state after the Open() has
> ended, so that the behaviour stays the same.

That breaks the lock chaining which ensures that the configuration stays in in 
synchronization in the window, display and core.

Besides, it solves exactly nothing. You still need to lock the display for 
pretty much every other calls, which leads to the same deadlocks.

And further besides, you _cannot_ block on the application main loop from 
output plugins of any kind, as it causes recursion or dead lock when the 
application invokes LibVLC functions. This has nothing to do with the video 
output, really.

-- 
雷米‧德尼-库尔蒙
http://www.remlab.net/





More information about the vlc-devel mailing list