]> git.alsa-project.org Git - alsa-lib.git/commitdiff
plugin:dshare: wrong state reporting
authorAndreas Pape <apape@de.adit-jv.com>
Tue, 4 Apr 2017 06:29:52 +0000 (11:59 +0530)
committerTakashi Iwai <tiwai@suse.de>
Wed, 5 Apr 2017 19:39:17 +0000 (21:39 +0200)
If plugin dshare detects underrun, it reports this to the user
via return value -EPIPE and setting dshare state to 'xrun' which is correct.
But, if user after this wants to check the stream state, it is misleadingly
reported as 'running' instead of 'xrun'.
With this behavior aplay e.g. will not do a proper underrun handling
(restarting stream) but terminates streaming.
This is due to plugin dshare always returns state of the slave pcm,
in pcm_ops->state() which is not correct.

Signed-off-by: Andreas Pape <apape@de.adit-jv.com>
Signed-off-by: Mounesh Sutar <sutar.mounesh@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
src/pcm/pcm_dshare.c

index 331f79914bb21954b5ee71f1c658c735c8d91886..4c57fb4a302809b8c702565db7d8798ee97b70ae 100644 (file)
@@ -244,7 +244,7 @@ static int snd_pcm_dshare_status(snd_pcm_t *pcm, snd_pcm_status_t * status)
        default:
                break;
        }
-
+       status->state = snd_pcm_state(pcm);
        status->trigger_tstamp = dshare->trigger_tstamp;
        status->avail = snd_pcm_mmap_playback_avail(pcm);
        status->avail_max = status->avail > dshare->avail_max ? status->avail : dshare->avail_max;