]> git.alsa-project.org Git - alsa-plugins.git/commitdiff
jack: Fix revents for playback
authorFons Adriaensen <fons@linuxaudio.org>
Mon, 9 Jan 2012 17:18:10 +0000 (18:18 +0100)
committerTakashi Iwai <tiwai@suse.de>
Mon, 9 Jan 2012 17:18:10 +0000 (18:18 +0100)
The following patch will make snd_pcm_poll_descriptors_revents()
return the correct value when used on a jack plugin device.
The current version returns POLLIN regardless of capture or
playback.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
jack/pcm_jack.c

index eb3359c3ab2bb1379c6ae2931664dcf207cecc20..c51fe84242e3d7ac99293b6cdb48f3f702b13177 100644 (file)
@@ -77,7 +77,7 @@ static int snd_pcm_jack_close(snd_pcm_ioplug_t *io)
        return 0;
 }
 
-static int snd_pcm_jack_poll_revents(snd_pcm_ioplug_t *io ATTRIBUTE_UNUSED,
+static int snd_pcm_jack_poll_revents(snd_pcm_ioplug_t *io,
                                     struct pollfd *pfds, unsigned int nfds,
                                     unsigned short *revents)
 {
@@ -87,7 +87,9 @@ static int snd_pcm_jack_poll_revents(snd_pcm_ioplug_t *io ATTRIBUTE_UNUSED,
 
        read(pfds[0].fd, buf, 1);
 
-       *revents = pfds[0].revents;
+       *revents = pfds[0].revents & ~(POLLIN | POLLOUT);
+       if (pfds[0].revents & POLLIN)
+               *revents |= (io->stream == SND_PCM_STREAM_PLAYBACK) ? POLLOUT : POLLIN;
        return 0;
 }