Fixed window resize signal handling and poll handling

This commit is contained in:
Jaroslav Kysela 2001-12-07 20:13:28 +00:00
parent acf749d325
commit e0eb9cc2ff

View file

@ -1506,6 +1506,7 @@ mixer_iteration (void)
int finished = 0; int finished = 0;
int key = 0; int key = 0;
int old_view; int old_view;
unsigned short revents;
/* setup for select on stdin and the mixer fd */ /* setup for select on stdin and the mixer fd */
if ((count = snd_mixer_poll_descriptors_count(mixer_handle)) < 0) if ((count = snd_mixer_poll_descriptors_count(mixer_handle)) < 0)
@ -1523,25 +1524,24 @@ mixer_iteration (void)
finished = poll(fds, count + 1, -1); finished = poll(fds, count + 1, -1);
/* don't abort on handled signals */ /* don't abort on handled signals */
if (finished && errno == EINTR) if (finished < 0 && errno == EINTR)
finished = 0; finished = 0;
else if (mixer_needs_resize) if (mixer_needs_resize)
mixer_resize (); mixer_resize ();
if (finished) { if (finished > 0) {
if (fds->revents & POLLIN) { if (fds->revents & POLLIN) {
key = getch (); key = getch ();
finished--; finished--;
} }
} else {
key = 0;
} }
if (finished) { if (finished > 0) {
for (idx = 1; idx <= count; idx++) { if (snd_mixer_poll_descriptors_revents(mixer_handle, fds + 1, count, &revents) >= 0) {
if (fds[idx].revents & (POLLIN|POLLOUT)) { if (revents & POLLIN)
snd_mixer_handle_events(mixer_handle); snd_mixer_handle_events(mixer_handle);
mixer_reinit();
break;
}
} }
} }