diff options
author | malc <av1474@comtv.ru> | 2009-09-14 03:53:25 +0400 |
---|---|---|
committer | malc <av1474@comtv.ru> | 2009-09-14 03:55:42 +0400 |
commit | b4f763b86dda1de95d595e4630c6ea5485484580 (patch) | |
tree | b5d541161b9715c614497bc3af7368d90b77f10d | |
parent | alsa/oss: Remove fd transfer handlers before closing oss/alsa fd/handle (diff) | |
download | qemu-kvm-b4f763b86dda1de95d595e4630c6ea5485484580.tar.gz qemu-kvm-b4f763b86dda1de95d595e4630c6ea5485484580.tar.bz2 qemu-kvm-b4f763b86dda1de95d595e4630c6ea5485484580.zip |
alsa: Use proper value when testing returned events in alsa_poll_handler
Signed-off-by: malc <av1474@comtv.ru>
-rw-r--r-- | audio/alsaaudio.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/audio/alsaaudio.c b/audio/alsaaudio.c index b7031518f..3fb6cbd41 100644 --- a/audio/alsaaudio.c +++ b/audio/alsaaudio.c @@ -37,6 +37,7 @@ struct pollhlp { snd_pcm_t *handle; struct pollfd *pfds; int count; + int mask; }; typedef struct ALSAVoiceOut { @@ -200,7 +201,7 @@ static void alsa_poll_handler (void *opaque) return; } - if (!(revents & POLLOUT)) { + if (!(revents & hlp->mask)) { if (conf.verbose) { dolog ("revents = %d\n", revents); } @@ -230,7 +231,7 @@ static void alsa_poll_handler (void *opaque) } } -static int alsa_poll_helper (snd_pcm_t *handle, struct pollhlp *hlp) +static int alsa_poll_helper (snd_pcm_t *handle, struct pollhlp *hlp, int mask) { int i, count, err; struct pollfd *pfds; @@ -287,6 +288,7 @@ static int alsa_poll_helper (snd_pcm_t *handle, struct pollhlp *hlp) hlp->pfds = pfds; hlp->count = count; hlp->handle = handle; + hlp->mask = mask; return 0; } @@ -294,14 +296,14 @@ static int alsa_poll_out (HWVoiceOut *hw) { ALSAVoiceOut *alsa = (ALSAVoiceOut *) hw; - return alsa_poll_helper (alsa->handle, &alsa->pollhlp); + return alsa_poll_helper (alsa->handle, &alsa->pollhlp, POLLOUT); } static int alsa_poll_in (HWVoiceIn *hw) { ALSAVoiceIn *alsa = (ALSAVoiceIn *) hw; - return alsa_poll_helper (alsa->handle, &alsa->pollhlp); + return alsa_poll_helper (alsa->handle, &alsa->pollhlp, POLLIN); } static int alsa_write (SWVoiceOut *sw, void *buf, int len) |