Hi,
this is a very simple one line patch but the issue was driving me crazy for few days.
After this finding, I have reviewed all the "switch" statements in alsa-lib. All well done with proper comment when a "case" falls through the next "case".
But there is one "switch" that does not follow the usual scheme. In file src/pcm/pcm_dsnoop.c procedure snd_pcm_dsnoop_delay() following code fragment:
switch(dsnoop->state) { case SNDRV_PCM_STATE_DRAINING: case SNDRV_PCM_STATE_RUNNING: err = snd_pcm_dsnoop_sync_ptr(pcm); if (err < 0) return err; case SNDRV_PCM_STATE_PREPARED: case SNDRV_PCM_STATE_SUSPENDED: *delayp = snd_pcm_mmap_capture_hw_avail(pcm); return 0;
If snd_pcm_dsnoop_sync_ptr() returns no error, execution falls through next "case". It's missing the usual comment /* Fall through */ to highlight such code behavior. I think the code is correct, but I do not have enough experience on alsa-lib to be sure. Please confirm. In such case, I would suggest adding the comment above.
Best Regards, Antonio Borneo