diff --git a/firmware/application/ui_record_view.cpp b/firmware/application/ui_record_view.cpp index c049ec84..09627510 100644 --- a/firmware/application/ui_record_view.cpp +++ b/firmware/application/ui_record_view.cpp @@ -286,11 +286,11 @@ void RecordView::start() { std::move(writer), write_size, buffer_count, []() { - CaptureThreadErrorMessage message { }; + CaptureThreadDoneMessage message { }; EventDispatcher::send_message(message); }, [](File::Error error) { - CaptureThreadErrorMessage message { error.code() }; + CaptureThreadDoneMessage message { error.code() }; EventDispatcher::send_message(message); } ); @@ -353,8 +353,14 @@ void RecordView::update_status_display() { } } -void RecordView::handle_error(const File::Error error) { +void RecordView::handle_capture_thread_done(const File::Error error) { stop(); + if( error.code() ) { + handle_error(error); + } +} + +void RecordView::handle_error(const File::Error error) { if( on_error ) { on_error(error.what()); } diff --git a/firmware/application/ui_record_view.hpp b/firmware/application/ui_record_view.hpp index c0d8bc5d..023fb0d5 100644 --- a/firmware/application/ui_record_view.hpp +++ b/firmware/application/ui_record_view.hpp @@ -69,6 +69,7 @@ private: void on_tick_second(); void update_status_display(); + void handle_capture_thread_done(const File::Error error); void handle_error(const File::Error error); const std::string filename_stem_pattern; @@ -107,10 +108,10 @@ private: std::unique_ptr capture_thread; MessageHandlerRegistration message_handler_capture_thread_error { - Message::ID::CaptureThreadError, + Message::ID::CaptureThreadDone, [this](const Message* const p) { - const auto message = *reinterpret_cast(p); - this->handle_error(message.error); + const auto message = *reinterpret_cast(p); + this->handle_capture_thread_done(message.error); } }; }; diff --git a/firmware/common/message.hpp b/firmware/common/message.hpp index c4864adc..725c328b 100644 --- a/firmware/common/message.hpp +++ b/firmware/common/message.hpp @@ -64,7 +64,7 @@ public: SpectrumStreamingConfig = 15, DisplaySleep = 16, CaptureConfig = 17, - CaptureThreadError = 18, + CaptureThreadDone = 18, MAX }; @@ -495,11 +495,11 @@ public: CaptureConfig* const config; }; -class CaptureThreadErrorMessage : public Message { +class CaptureThreadDoneMessage : public Message { public: - constexpr CaptureThreadErrorMessage( + constexpr CaptureThreadDoneMessage( uint32_t error = 0 - ) : Message { ID::CaptureThreadError }, + ) : Message { ID::CaptureThreadDone }, error { error } { }