Hello,
We are having odd issues with libasound 1.1.2 which we didn't have with libasound 1.1.1, more precisely
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=833950
so I'm having a look at the locking API introduced in 1.1.2, and there are some oddities:
- snd_pcm_new seems to initialize pcm->thread_safe to 0 by default, this does not seem safe. The attached patch initializes it to 1, which fixes the bug in our tests.
- snd_pcm_hw_open_fd forces it to 1, thus ignoring what snd_pcm_new set.
- one can find both __snd_pcm_lock and snd_pcm_lock functions, what is the expected difference between them?
- __snd_pcm_lock takes locks when thread_safe >= 0, while snd_pcm_lock takes locks when thread_safe == 0, this looks really odd.
- libasound could just not link against libpthread, pthread_mutex_lock/unlock are already provided as empty stubs by libc, the overhead will thus only be hit when the application links against libpthread (libasound will then properly use pthread locks).
Samuel