From 8fa37f738c37a407d13aa4f269842f125f461571 Mon Sep 17 00:00:00 2001 From: goeiecool9999 <7033575+goeiecool9999@users.noreply.github.com> Date: Sun, 20 Oct 2024 12:04:09 +0200 Subject: [PATCH] fix crash when closing before search, make discard a function for consistency --- src/gui/input/InputAPIAddWindow.cpp | 19 +++++++++++++------ src/gui/input/InputAPIAddWindow.h | 2 ++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/gui/input/InputAPIAddWindow.cpp b/src/gui/input/InputAPIAddWindow.cpp index e690753a..688ee14e 100644 --- a/src/gui/input/InputAPIAddWindow.cpp +++ b/src/gui/input/InputAPIAddWindow.cpp @@ -116,8 +116,7 @@ InputAPIAddWindow::InputAPIAddWindow(wxWindow* parent, const wxPoint& position, InputAPIAddWindow::~InputAPIAddWindow() { - std::lock_guard lock{m_search_thread_data->mutex}; - m_search_thread_data->discardResult = true; + discard_thread_result(); } void InputAPIAddWindow::on_add_button(wxCommandEvent& event) @@ -165,13 +164,11 @@ std::unique_ptr InputAPIAddWindow::get_settings() co void InputAPIAddWindow::on_api_selected(wxCommandEvent& event) { + discard_thread_result(); + if (m_input_api->GetSelection() == wxNOT_FOUND) return; - m_search_running = false; - if(m_search_thread_data) - m_search_thread_data->discardResult = true; - m_controller_list->Enable(); m_controller_list->SetSelection(wxNOT_FOUND); @@ -317,3 +314,13 @@ void InputAPIAddWindow::on_controllers_refreshed(wxCommandEvent& event) } } } + +void InputAPIAddWindow::discard_thread_result() +{ + m_search_running = false; + if(m_search_thread_data) + { + std::lock_guard lock{m_search_thread_data->mutex}; + m_search_thread_data->discardResult = true; + } +} diff --git a/src/gui/input/InputAPIAddWindow.h b/src/gui/input/InputAPIAddWindow.h index dd4eaf7f..085dd623 100644 --- a/src/gui/input/InputAPIAddWindow.h +++ b/src/gui/input/InputAPIAddWindow.h @@ -39,6 +39,8 @@ private: void on_controller_selected(wxCommandEvent& event); void on_controllers_refreshed(wxCommandEvent& event); + void discard_thread_result(); + wxChoice* m_input_api; wxComboBox* m_controller_list; wxButton* m_ok_button;