diff --git a/src/input_common.cpp b/src/input_common.cpp index dc89f2b75..fb82b1842 100644 --- a/src/input_common.cpp +++ b/src/input_common.cpp @@ -134,6 +134,13 @@ static char_event_t readb() { } } + if (ioport > 0 && FD_ISSET(ioport, &fdset)) { + iothread_service_completion(); + if (auto mc = s_lookahead->pop_evt()) { + return *mc; + } + } + if (FD_ISSET(STDIN_FILENO, &fdset)) { unsigned char arr[1]; if (read_blocked(0, arr, 1) != 1) { @@ -144,15 +151,6 @@ static char_event_t readb() { // We read from stdin, so don't loop. return arr[0]; } - - // Check for iothread completions only if there is no data to be read from the stdin. - // This gives priority to the foreground. - if (ioport > 0 && FD_ISSET(ioport, &fdset)) { - iothread_service_completion(); - if (auto mc = s_lookahead->pop_evt()) { - return *mc; - } - } } } }