From e0eb9cc2ff761589992ec27b473a75b90f081519 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 7 Dec 2001 20:13:28 +0000 Subject: [PATCH] Fixed window resize signal handling and poll handling --- alsamixer/alsamixer.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/alsamixer/alsamixer.c b/alsamixer/alsamixer.c index ae0518c..90b136b 100644 --- a/alsamixer/alsamixer.c +++ b/alsamixer/alsamixer.c @@ -1506,6 +1506,7 @@ mixer_iteration (void) int finished = 0; int key = 0; int old_view; + unsigned short revents; /* setup for select on stdin and the mixer fd */ if ((count = snd_mixer_poll_descriptors_count(mixer_handle)) < 0) @@ -1523,25 +1524,24 @@ mixer_iteration (void) finished = poll(fds, count + 1, -1); /* don't abort on handled signals */ - if (finished && errno == EINTR) + if (finished < 0 && errno == EINTR) finished = 0; - else if (mixer_needs_resize) + if (mixer_needs_resize) mixer_resize (); - if (finished) { + if (finished > 0) { if (fds->revents & POLLIN) { key = getch (); finished--; } + } else { + key = 0; } - if (finished) { - for (idx = 1; idx <= count; idx++) { - if (fds[idx].revents & (POLLIN|POLLOUT)) { + if (finished > 0) { + if (snd_mixer_poll_descriptors_revents(mixer_handle, fds + 1, count, &revents) >= 0) { + if (revents & POLLIN) snd_mixer_handle_events(mixer_handle); - mixer_reinit(); - break; - } } } -- 2.47.1