size_t last_size;
size_t ptr;
int underrun;
+ int handle_underrun;
size_t offset;
if (io->stream == SND_PCM_STREAM_PLAYBACK) {
pa_stream_set_write_callback(pcm->stream,
stream_request_cb, pcm);
- pa_stream_set_underflow_callback(pcm->stream,
- stream_underrun_cb, pcm);
+ if (pcm->handle_underrun)
+ pa_stream_set_underflow_callback(pcm->stream,
+ stream_underrun_cb, pcm);
r = pa_stream_connect_playback(pcm->stream, pcm->device,
&pcm->buffer_attr,
PA_STREAM_AUTO_TIMING_UPDATE |
snd_config_iterator_t i, next;
const char *server = NULL;
const char *device = NULL;
+ int handle_underrun = 0;
int err;
snd_pcm_pulse_t *pcm;
}
continue;
}
+ if (strcmp(id, "handle_underrun") == 0) {
+ if ((err = snd_config_get_bool(n)) < 0) {
+ SNDERR("Invalid value for %s", id);
+ return -EINVAL;
+ }
+ handle_underrun = err;
+ continue;
+ }
SNDERR("Unknown field %s", id);
return -EINVAL;
}
goto error;
}
+ pcm->handle_underrun = handle_underrun;
+
err = pulse_connect(pcm->p, server);
if (err < 0)
goto error;