Detailed changes v1.1.4 v1.1.4.1

From AlsaProject
Jump to: navigation, search

Contents

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.
Custom Search
Personal tools
Namespaces

Variants
Actions
Navigation
wiki
Toolbox