mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-11-01 22:58:49 -04:00
pcm: handle start_treshold in snd_pcm_write_areas more robustly
The start_treshold is defined as unsigned, so fix the condition to allow using values avobe LONG_MAX. Also, fix the documentation for the 64-bit platforms (INTMAX -> LONG_MAX). Fixes: https://github.com/alsa-project/alsa-lib/issues/374 Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
parent
19e6349182
commit
c3fec78ddd
1 changed files with 3 additions and 2 deletions
|
|
@ -378,7 +378,7 @@ be started automatically from the device. For capture, if the application wants
|
||||||
to read count of samples equal or greater then the stream will be started.
|
to read count of samples equal or greater then the stream will be started.
|
||||||
If you want to use explicit start (#snd_pcm_start), you can
|
If you want to use explicit start (#snd_pcm_start), you can
|
||||||
set this value greater than ring buffer size (in samples), but use the
|
set this value greater than ring buffer size (in samples), but use the
|
||||||
constant MAXINT is not a bad idea.
|
constant LONG_MAX or the boundary value is not a bad idea.
|
||||||
|
|
||||||
\par Stop threshold
|
\par Stop threshold
|
||||||
|
|
||||||
|
|
@ -7721,7 +7721,8 @@ snd_pcm_sframes_t snd_pcm_write_areas(snd_pcm_t *pcm, const snd_pcm_channel_area
|
||||||
/* some plugins might automatically start the stream */
|
/* some plugins might automatically start the stream */
|
||||||
state = __snd_pcm_state(pcm);
|
state = __snd_pcm_state(pcm);
|
||||||
if (state == SND_PCM_STATE_PREPARED &&
|
if (state == SND_PCM_STATE_PREPARED &&
|
||||||
hw_avail >= (snd_pcm_sframes_t) pcm->start_threshold) {
|
hw_avail >= 0 &&
|
||||||
|
(snd_pcm_uframes_t) hw_avail >= pcm->start_threshold) {
|
||||||
err = __snd_pcm_start(pcm);
|
err = __snd_pcm_start(pcm);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
goto _end;
|
goto _end;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue