diff --git a/libs/main/io_devices/piiodevice.cpp b/libs/main/io_devices/piiodevice.cpp index 5f3c259b..889b31b1 100644 --- a/libs/main/io_devices/piiodevice.cpp +++ b/libs/main/io_devices/piiodevice.cpp @@ -232,7 +232,16 @@ void PIIODevice::terminateThreadedRead() { bool PIIODevice::waitThreadedReadFinished(int timeout_ms) { - return read_thread.waitForFinish(timeout_ms); + PITimeMeasurer tm, tm_intr; + while (read_thread.isRunning()) { + if (tm.elapsed_m() > timeout_ms) return false; + if (tm_intr.elapsed_m() > 100.) { + tm_intr.reset(); + interrupt(); + } + piMinSleep(); + } + return true; }