Flushing issue (was: So, where'd the volume controls get to?)

Samuel Thibault samuel.thibault at ens-lyon.org
Sun Oct 11 11:16:40 EDT 2020


Samuel Thibault, le dim. 11 oct. 2020 16:35:16 +0200, a ecrit:
> Gregory Nowak, le sam. 10 oct. 2020 20:55:32 -0700, a ecrit:
> > 4. Open the sound card with another application.
> 
> Oh, in that case I do get the mixture on my system indeed.

It seems the buffering is happening inside alsa's dmix then. Could you
try the attached patch on pcaudiolib? (which is the one that configures
the buffering)

Samuel
-------------- next part --------------
Index: pcaudiolib-1.1/src/alsa.c
===================================================================
--- pcaudiolib-1.1.orig/src/alsa.c
+++ pcaudiolib-1.1/src/alsa.c
@@ -99,6 +99,7 @@ alsa_object_open(struct audio_object *ob
 
 	snd_pcm_hw_params_t *params = NULL;
 	snd_pcm_hw_params_malloc(&params);
+	snd_pcm_uframes_t bufsize = 128;
 
 	int err = 0;
 	if ((err = snd_pcm_open(&self->handle, self->device ? self->device : "default", SND_PCM_STREAM_PLAYBACK, 0)) < 0)
@@ -113,6 +114,8 @@ alsa_object_open(struct audio_object *ob
 		goto error;
 	if ((err = snd_pcm_hw_params_set_channels(self->handle, params, channels)) < 0)
 		goto error;
+	if ((err = snd_pcm_hw_params_set_buffer_size_near(self->handle, params, &bufsize)) < 0)
+		goto error;
 	if ((err = snd_pcm_hw_params(self->handle, params)) < 0)
 		goto error;
 	if ((err = snd_pcm_prepare(self->handle)) < 0)


More information about the Speakup mailing list