diff options
-rw-r--r-- | screen_ui.cpp | 4 | ||||
-rw-r--r-- | tests/unit/screen_ui_test.cpp | 5 | ||||
-rw-r--r-- | ui.cpp | 4 |
3 files changed, 11 insertions, 2 deletions
diff --git a/screen_ui.cpp b/screen_ui.cpp index b9aba807d..b4ef054ce 100644 --- a/screen_ui.cpp +++ b/screen_ui.cpp @@ -173,7 +173,9 @@ ScreenRecoveryUI::ScreenRecoveryUI(bool scrollable_menu) ScreenRecoveryUI::~ScreenRecoveryUI() { progress_thread_stopped_ = true; - progress_thread_.join(); + if (progress_thread_.joinable()) { + progress_thread_.join(); + } } GRSurface* ScreenRecoveryUI::GetCurrentFrame() const { diff --git a/tests/unit/screen_ui_test.cpp b/tests/unit/screen_ui_test.cpp index 2179b729f..a3dd2add9 100644 --- a/tests/unit/screen_ui_test.cpp +++ b/tests/unit/screen_ui_test.cpp @@ -293,6 +293,11 @@ TEST_F(ScreenRecoveryUITest, Init) { ASSERT_FALSE(ui_->WasTextEverVisible()); } +TEST_F(ScreenRecoveryUITest, dtor_NotCallingInit) { + ui_.reset(); + ASSERT_FALSE(ui_); +} + TEST_F(ScreenRecoveryUITest, ShowText) { ASSERT_TRUE(ui_->Init(kTestLocale)); ASSERT_FALSE(ui_->IsTextVisible()); @@ -78,7 +78,9 @@ RecoveryUI::RecoveryUI() RecoveryUI::~RecoveryUI() { ev_exit(); input_thread_stopped_ = true; - input_thread_.join(); + if (input_thread_.joinable()) { + input_thread_.join(); + } } void RecoveryUI::OnKeyDetected(int key_code) { |