We encountered an alsa plugin a while ago (not sure if the source can be shared) which had mixer controls, but no descriptors to poll for changes. Quit early to avoid latter assertion failures. BugLink: https://bugs.launchpad.net/bugs/1092377 Signed-off-by: David Henningsson <david.henningsson at canonical.com> --- src/modules/alsa/alsa-mixer.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c index 486da83..af7adea 100644 --- a/src/modules/alsa/alsa-mixer.c +++ b/src/modules/alsa/alsa-mixer.c @@ -329,6 +329,10 @@ static void defer_cb(pa_mainloop_api *a, pa_defer_event *e, void *userdata) { pa_log("snd_mixer_poll_descriptors_count() failed: %s", pa_alsa_strerror(n)); return; } + else if (n == 0) { + pa_log_warn("Mixer has no poll descriptors. Please control mixer from PulseAudio only."); + return; + } num_fds = (unsigned) n; if (num_fds != fdl->num_fds) { @@ -522,6 +526,10 @@ int pa_alsa_set_mixer_rtpoll(struct pa_alsa_mixer_pdata *pd, snd_mixer_t *mixer, pa_log("snd_mixer_poll_descriptors_count() failed: %s", pa_alsa_strerror(n)); return -1; } + else if (n == 0) { + pa_log_warn("Mixer has no poll descriptors. Please control mixer from PulseAudio only."); + return 0; + } i = pa_rtpoll_item_new(rtp, PA_RTPOLL_LATE, (unsigned) n); -- 1.9.1