--- interface/alsaseq_c.c 2006/12/13 23:22:53 1.28 +++ interface/alsaseq_c.c 2008/04/16 00:14:45 1.29 @@ -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; } }