--- /var/tmp/portage/media-sound/timidity++-2.13.2-r6/work/TiMidity++-2.13.2/interface/alsaseq_c.c 2007-11-27 14:08:14.000000000 -0500 +++ TiMidity++-2.13.2/interface/alsaseq_c.c 2007-11-27 14:13:49.000000000 -0500 @@ -501,6 +501,8 @@ static void doit(struct seq_context *ctxp) { + fd_set rfds; + struct timeval timeout; for (;;) { while (snd_seq_event_input_pending(ctxp->handle, 1)) { if (do_sequencer(ctxp)) @@ -528,15 +530,17 @@ play_event(&ev); aq_fill_nonblocking(); } - if (! ctxp->active || ! IS_STREAM_TRACE) { - fd_set rfds; - struct timeval timeout; - FD_ZERO(&rfds); - FD_SET(ctxp->fd, &rfds); + + FD_ZERO(&rfds); + FD_SET(ctxp->fd, &rfds); + if (ctxp->active) { timeout.tv_sec = 0; timeout.tv_usec = 10000; /* 10ms */ if (select(ctxp->fd + 1, &rfds, NULL, NULL, &timeout) < 0) goto __done; + } else { + if (select(ctxp->fd + 1, &rfds, NULL, NULL, NULL) < 0) + goto __done; } }