print warnings about driver bugs at most once

This commit is contained in:
Lennart Poettering 2009-02-21 16:33:46 +01:00
parent 4505bc9cc6
commit 14ee8d471a
3 changed files with 36 additions and 22 deletions

View file

@ -304,10 +304,12 @@ static int mmap_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
if (PA_UNLIKELY(n_bytes <= u->hwbuf_unused)) { if (PA_UNLIKELY(n_bytes <= u->hwbuf_unused)) {
if (polled && pa_log_ratelimit()) if (polled)
PA_ONCE_BEGIN {
pa_log(_("ALSA woke us up to write new data to the device, but there was actually nothing to write! " pa_log(_("ALSA woke us up to write new data to the device, but there was actually nothing to write! "
"Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers. " "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers. "
"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail_update() returned 0.")); "We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail_update() returned 0."));
} PA_ONCE_END;
#ifdef DEBUG_TIMING #ifdef DEBUG_TIMING
pa_log_debug("Not filling up, because not necessary."); pa_log_debug("Not filling up, because not necessary.");
@ -431,10 +433,12 @@ static int unix_write(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polle
if (PA_UNLIKELY(n_bytes <= u->hwbuf_unused)) { if (PA_UNLIKELY(n_bytes <= u->hwbuf_unused)) {
if (polled && pa_log_ratelimit()) if (polled)
PA_ONCE_BEGIN {
pa_log(_("ALSA woke us up to write new data to the device, but there was actually nothing to write! " pa_log(_("ALSA woke us up to write new data to the device, but there was actually nothing to write! "
"Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers. " "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers. "
"We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail_update() returned 0.")); "We were woken up with POLLOUT set -- however a subsequent snd_pcm_avail_update() returned 0."));
} PA_ONCE_END;
break; break;
} }

View file

@ -287,10 +287,12 @@ static int mmap_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
if (PA_UNLIKELY(n_bytes <= 0)) { if (PA_UNLIKELY(n_bytes <= 0)) {
if (polled && pa_log_ratelimit()) if (polled)
PA_ONCE_BEGIN {
pa_log(_("ALSA woke us up to read new data from the device, but there was actually nothing to read! " pa_log(_("ALSA woke us up to read new data from the device, but there was actually nothing to read! "
"Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers. " "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers. "
"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail_update() returned 0.")); "We were woken up with POLLIN set -- however a subsequent snd_pcm_avail_update() returned 0."));
} PA_ONCE_END;
#ifdef DEBUG_TIMING #ifdef DEBUG_TIMING
pa_log_debug("Not reading, because not necessary."); pa_log_debug("Not reading, because not necessary.");
@ -406,10 +408,12 @@ static int unix_read(struct userdata *u, pa_usec_t *sleep_usec, pa_bool_t polled
if (PA_UNLIKELY(n_bytes <= 0)) { if (PA_UNLIKELY(n_bytes <= 0)) {
if (polled && pa_log_ratelimit()) if (polled)
PA_ONCE_BEGIN {
pa_log(_("ALSA woke us up to read new data from the device, but there was actually nothing to read! " pa_log(_("ALSA woke us up to read new data from the device, but there was actually nothing to read! "
"Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers. " "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers. "
"We were woken up with POLLIN set -- however a subsequent snd_pcm_avail_update() returned 0.")); "We were woken up with POLLIN set -- however a subsequent snd_pcm_avail_update() returned 0."));
} PA_ONCE_END;
break; break;
} }

View file

@ -39,6 +39,7 @@
#include <pulsecore/core-util.h> #include <pulsecore/core-util.h>
#include <pulsecore/atomic.h> #include <pulsecore/atomic.h>
#include <pulsecore/core-error.h> #include <pulsecore/core-error.h>
#include <pulsecore/once.h>
#include "alsa-util.h" #include "alsa-util.h"
@ -1574,9 +1575,12 @@ snd_pcm_sframes_t pa_alsa_safe_avail(snd_pcm_t *pcm, size_t hwbuf_size, const pa
if (k >= hwbuf_size * 3 || if (k >= hwbuf_size * 3 ||
k >= pa_bytes_per_second(ss)*10) k >= pa_bytes_per_second(ss)*10)
PA_ONCE_BEGIN {
pa_log(_("snd_pcm_avail_update() returned a value that is exceptionally large: %lu bytes (%lu ms). " pa_log(_("snd_pcm_avail_update() returned a value that is exceptionally large: %lu bytes (%lu ms). "
"Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers."), "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers."),
(unsigned long) k, (unsigned long) (pa_bytes_to_usec(k, ss) / PA_USEC_PER_MSEC)); (unsigned long) k, (unsigned long) (pa_bytes_to_usec(k, ss) / PA_USEC_PER_MSEC));
} PA_ONCE_END;
return n; return n;
} }
@ -1606,9 +1610,11 @@ int pa_alsa_safe_mmap_begin(snd_pcm_t *pcm, const snd_pcm_channel_area_t **areas
k >= hwbuf_size * 3 || k >= hwbuf_size * 3 ||
k >= pa_bytes_per_second(ss)*10) k >= pa_bytes_per_second(ss)*10)
PA_ONCE_BEGIN {
pa_log(_("snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes (%lu ms). " pa_log(_("snd_pcm_mmap_begin() returned a value that is exceptionally large: %lu bytes (%lu ms). "
"Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers."), "Most likely this is an ALSA driver bug. Please report this issue to the ALSA developers."),
(unsigned long) k, (unsigned long) (pa_bytes_to_usec(k, ss) / PA_USEC_PER_MSEC)); (unsigned long) k, (unsigned long) (pa_bytes_to_usec(k, ss) / PA_USEC_PER_MSEC));
} PA_ONCE_END;
return r; return r;
} }