skins2: avoid deadlock when audio-visual is used (accounts for vlc often but not...
authorErwan Tulou <erwan10@videolan.org>
Sat, 22 Aug 2009 13:01:57 +0000 (15:01 +0200)
committerErwan Tulou <erwan10@videolan.org>
Mon, 24 Aug 2009 16:05:37 +0000 (18:05 +0200)
commit64a6e968de15c50e48018cfbb7aff939388cb02d
tree8e345b98a478d76605bcf9369c9261871b807663
parent3567c033215cc9a5bbd51590789ba59f90eeba01
skins2: avoid deadlock when audio-visual is used (accounts for vlc often but not always hanging in this case)

Audio-visual holds the audio_mixer lock during its initialization phase which includes initialization of the vout.
On the other hand, skins polls every 10ms to check change in the audio volume (this also requires holding the audio_mixer lock)
This leads to a frequent deadlock at the skins level.

The patch stops polling w.r.t volume and rather reacts on change signalled by the core via a callback. This makes deadlock occurence almost nil.

A long term solution could be that 1/ audio_visual doesn't keep on holding the lock during vout initialisation and 2/ skins stops polling every 10ms for a whole bunch of things (rather use callbacks as qt4 does)
modules/gui/skins2/commands/cmd_audio.cpp
modules/gui/skins2/commands/cmd_audio.hpp
modules/gui/skins2/src/vlcproc.cpp
modules/gui/skins2/src/vlcproc.hpp