2.0 regression: volume/mute change may be slow (and freeze the UI)
By design, the aout lock will remains busy for the whole duration of a call to the audio output plugin. Some audio output plugins can sleep in their callback, in which case the aout lock will remain busy for some time.
In particular, if the audio decoding buffer is larger than the audio output buffer, then the audio decoder thread may spend most of the time sleeping within the audio output Play() callback (at least ALSA does this depending on the circumstances). The aout lock is released and then reacquired almost immediately by the decoder thread.
Depending how the OS schedules thread, the UI may not get the chance to acquire the aout lock for several seconds, even longer than the maximum audio decoding buffer. In the mean time, the UI thread will be frozen.
See also http://bugs.debian.org/665732 .