[alsa-devel] [PATCH 1/3] snd-usb-caiaq: only warn once on streaming errors
Daniel Mack
daniel at caiaq.de
Wed Mar 18 11:03:53 CET 2009
Limit the number of printed warnings to one in case of streaming errors.
printk() happens to be expensive, especially in code called as often as
here.
Signed-off-by: Daniel Mack <daniel at caiaq.de>
---
sound/usb/caiaq/caiaq-audio.c | 4 +++-
sound/usb/caiaq/caiaq-device.h | 2 +-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/sound/usb/caiaq/caiaq-audio.c b/sound/usb/caiaq/caiaq-audio.c
index fc6d571..577b112 100644
--- a/sound/usb/caiaq/caiaq-audio.c
+++ b/sound/usb/caiaq/caiaq-audio.c
@@ -114,6 +114,7 @@ static int stream_start(struct snd_usb_caiaqdev *dev)
dev->output_panic = 0;
dev->first_packet = 1;
dev->streaming = 1;
+ dev->warned = 0;
for (i = 0; i < N_URBS; i++) {
ret = usb_submit_urb(dev->data_urbs_in[i], GFP_ATOMIC);
@@ -406,10 +407,11 @@ static void read_in_urb(struct snd_usb_caiaqdev *dev,
break;
}
- if (dev->input_panic || dev->output_panic) {
+ if ((dev->input_panic || dev->output_panic) && !dev->warned) {
debug("streaming error detected %s %s\n",
dev->input_panic ? "(input)" : "",
dev->output_panic ? "(output)" : "");
+ dev->warned = 1;
}
}
diff --git a/sound/usb/caiaq/caiaq-device.h b/sound/usb/caiaq/caiaq-device.h
index 3edd94d..4aa8631 100644
--- a/sound/usb/caiaq/caiaq-device.h
+++ b/sound/usb/caiaq/caiaq-device.h
@@ -90,7 +90,7 @@ struct snd_usb_caiaqdev {
int audio_out_buf_pos[MAX_STREAMS];
int period_in_count[MAX_STREAMS];
int period_out_count[MAX_STREAMS];
- int input_panic, output_panic;
+ int input_panic, output_panic, warned;
char *audio_in_buf, *audio_out_buf;
unsigned int samplerates;
--
1.6.2
More information about the Alsa-devel
mailing list