Skip to content

Commit

Permalink
pcm: handle start_treshold in snd_pcm_write_areas more robustly
Browse files Browse the repository at this point in the history
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: #374
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
  • Loading branch information
perexg committed Jan 2, 2024
1 parent 19e6349 commit c3fec78
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions src/pcm/pcm.c
Original file line number Diff line number Diff line change
Expand Up @@ -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.
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
constant MAXINT is not a bad idea.
constant LONG_MAX or the boundary value is not a bad idea.
\par Stop threshold
Expand Down Expand Up @@ -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 */
state = __snd_pcm_state(pcm);
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);
if (err < 0)
goto _end;
Expand Down

0 comments on commit c3fec78

Please sign in to comment.