Detailed changes v1.1.4 v1.1.4.1
Jump to navigation
Jump to search
Detailed changelog between 1.1.4 and 1.1.4.1 releases
Changelog between 1.1.4 and 1.1.4.1 releases
alsa-lib
Core
- - Release v1.1.4.1
- - conf: Check the availability of PTHREAD_MUTEX_RECURSIVE
- Check the availability of PTHREAD_MUTEX_RECURSIVE in configure script
- and use it only when possible. A fairly old version of glibc still
- seems working, but just to be sure.
PCM API
- - pcm: dmix: Fix the inconsistent PCM state
- The commit 38a2d2eda880 ("pcm: dmix: Do not discard slave reported
- delay in...") changed the handling in snd_pcm_dmix_status() for taking
- the actual delay from the slave PCM status. Along with it, the commit
- removed the line to update its own state altogether, as it had been
- done originally in the dshare patch (commit faf53c197cab "pcm_dshare:
- Do not discard slave reported delay..."), supposing that the slave PCM
- keeps this same state. However, for dmix/dshare, the PCM state may
- differ from the slave, thus these changes resulted in the inconsistent
- PCM state.
- For dshare, the issue was already addressed by commit ad6957c61867
- ("plugin:dshare: wrong state reporting"), while the fix for dmix was
- forgotten until now.
- This patch restores the code to set the proper dmix PCM state again
- like in the previous versions.
- Fixes: 38a2d2eda880 ("pcm: dmix: Do not discard slave reported delay in...")
- Reported-by: Cheng Sun <chengsun9@gmail.com>
- - pcm: dshare: Call snd_pcm_dshare_state() directly
- ... otherwise it may be a deadlock if recursive lock isn't available.
- - pcm: dmix: Workaround for binary incompatibility
- The commit 1a9bd0f04481 ("pcm: direct: Fix for sync issue on xrun
- recover") introduced a new field "recoveries" in
- snd_pcm_direct_share_t. Unfortunately this caused two issues:
- - It changed the size of the struct which is used as the magic key
- - The struct size differs between 32bit and 64bit due to alignment
- The former brought the incompatibility with the older alsa-lib,
- e.g. when you run an app with an older alsa-lib via LD_PRELOAD, it
- doesn't work any longer.
- The latter is more serious, it disallows running 32bit apps dmix with
- 64bit together.
- As a workaround, put recoveries field to the unused field
- "s.xfer_align", so that the struct is in an old form. This makes the
- dmix again binary-compatible with 1.1.3 and older versions, and also
- fix the incompatibility between 32/64 bits.
- This is a one-time workaround, and we may need to reconsider more
- about a breakage in future...
- Fixes: 1a9bd0f04481 ("pcm: direct: Fix for sync issue on xrun recover")
- Reported-and-tested-by: Cheng Sun <chengsun9@gmail.com>
- - conf: Check the availability of PTHREAD_MUTEX_RECURSIVE
- Check the availability of PTHREAD_MUTEX_RECURSIVE in configure script
- and use it only when possible. A fairly old version of glibc still
- seems working, but just to be sure.
- - build: Define __USE_UNIX98 for old glibc
- Otherwise PTHREAD_MUTEX_RECURSIVE isn't defined and we get an error
- with old glibc.
Configuration
- - conf: Check the availability of PTHREAD_MUTEX_RECURSIVE
- Check the availability of PTHREAD_MUTEX_RECURSIVE in configure script
- and use it only when possible. A fairly old version of glibc still
- seems working, but just to be sure.
Test/Example code
- - test: add a test for list operation to user-defined element sets
- Current implementation of test for user-defined element doesn't perform
- list operation. This commit adds easy test for the operation.