--- TiMidity++-2.13.2/interface/alsaseq_c.c.orig 2010-12-16 13:26:54.000000000 +0100 +++ TiMidity++-2.13.2/interface/alsaseq_c.c 2010-12-16 14:15:24.486618509 +0100 @@ -505,6 +505,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)) @@ -532,15 +534,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; } }