[vlc-devel] RE : commit: skins2: avoid deadlock when audio-visual isused ( accounts for vlc often but not always hanging in thiscase) (Erwan Tulou )
brezhoneg1 at yahoo.fr
Tue Aug 25 13:47:49 CEST 2009
> Le lundi 24 août 2009 19:07:57 git version control, vous avez écrit :
> > A long term solution could be that 1/ audio_visual doesn't keep on
> > the lock during vout initialisation and 2/ skins stops polling every
> > for a whole bunch of things (rather use callbacks as qt4 does)
> Maybe, but can't you use an asynchronous delivery from the audio
> callback to the skins2 thread?
It is an asynchronous delivery. In skins, callbacks post commands in an
async queue (thread-safe). Then, the skins thread empties the queue and
executes the commands. This patch uses this pattern.
For this audio-visual issue (audio_mixer lock kept during vout
initialization), qt4 and skins have got the exact same problem :
- as window providers, they service vout request in a blocking mode
- In between, they may happen to be processing another unrelated
request requiring the same audio_mixer lock
Which means deadlock :(
This deadlock is not frequent. But, if the user requests an
audio-visual and in the same time uses the volume slider, chances are a
deadlock can occur.
This only way to totally remove this deadlock is to unlock the
audio_mixer during the vout initialization.
More information about the vlc-devel