[vlc-devel] RE : commit: skins2: avoid deadlock when audio-visual isused ( accounts for vlc often but not always hanging in thiscase) (Erwan Tulou )

brezhoneg1 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
> 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)
> 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 mailing list