diff --git a/firmware/application/audio_thread.hpp b/firmware/application/audio_thread.hpp index 7290a3de..7474c43d 100644 --- a/firmware/application/audio_thread.hpp +++ b/firmware/application/audio_thread.hpp @@ -102,23 +102,24 @@ private: } msg_t run() { - bool success = true; - while( success && !chThdShouldTerminate() ) { + auto fifo = reinterpret_cast*>(shared_memory.FIFO_HACK); + if( !fifo ) { + return false; + } + + StreamOutput stream { fifo }; + + while( !chThdShouldTerminate() ) { chEvtWaitAny(EVT_FIFO_HIGHWATER); - auto fifo = reinterpret_cast*>(shared_memory.FIFO_HACK); - if( !fifo ) { - break; - } - - StreamOutput stream { fifo }; - - while( success && (stream.available() >= write_buffer->size()) ) { - success = transfer(stream, write_buffer.get()); + while( stream.available() >= write_buffer->size() ) { + if( !transfer(stream, write_buffer.get()) ) { + return false; + } } } - - return success; + + return true; } bool transfer(StreamOutput& stream, std::array* const write_buffer) {