diff --git a/Source/Core/DolphinWX/LogConfigWindow.cpp b/Source/Core/DolphinWX/LogConfigWindow.cpp index d6c6b7686012..da517d288ff8 100644 --- a/Source/Core/DolphinWX/LogConfigWindow.cpp +++ b/Source/Core/DolphinWX/LogConfigWindow.cpp @@ -25,13 +25,14 @@ LogConfigWindow::LogConfigWindow(wxWindow* parent, wxWindowID id) _("Log Configuration")), enableAll(true) { + Bind(wxEVT_CLOSE_WINDOW, &LogConfigWindow::OnClose, this); SetMinSize(wxSize(100, 100)); m_LogManager = LogManager::GetInstance(); CreateGUIControls(); LoadSettings(); } -LogConfigWindow::~LogConfigWindow() +void LogConfigWindow::OnClose(wxCloseEvent& event) { SaveSettings(); } diff --git a/Source/Core/DolphinWX/LogConfigWindow.h b/Source/Core/DolphinWX/LogConfigWindow.h index f9a3a4806d22..3259c060ecaf 100644 --- a/Source/Core/DolphinWX/LogConfigWindow.h +++ b/Source/Core/DolphinWX/LogConfigWindow.h @@ -15,7 +15,6 @@ class LogConfigWindow : public wxPanel { public: LogConfigWindow(wxWindow* parent, wxWindowID id = wxID_ANY); - ~LogConfigWindow(); void SaveSettings(); void LoadSettings(); @@ -32,6 +31,7 @@ class LogConfigWindow : public wxPanel void CreateGUIControls(); void OnVerbosityChange(wxCommandEvent& event); + void OnClose(wxCloseEvent& event); void OnWriteFileChecked(wxCommandEvent& event); void OnWriteConsoleChecked(wxCommandEvent& event); void OnWriteWindowChecked(wxCommandEvent& event); diff --git a/Source/Core/DolphinWX/LogWindow.cpp b/Source/Core/DolphinWX/LogWindow.cpp index 940c647da10f..1b47f1688371 100644 --- a/Source/Core/DolphinWX/LogWindow.cpp +++ b/Source/Core/DolphinWX/LogWindow.cpp @@ -149,18 +149,20 @@ void CLogWindow::CreateGUIControls() m_cmdline->SetFocus(); } -CLogWindow::~CLogWindow() -{ - for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i) - { - m_LogManager->RemoveListener((LogTypes::LOG_TYPE)i, LogListener::LOG_WINDOW_LISTENER); - } -} - void CLogWindow::OnClose(wxCloseEvent& event) { SaveSettings(); event.Skip(); + RemoveAllListeners(); +} + +void CLogWindow::RemoveAllListeners() +{ + for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i) + { + m_LogManager->RemoveListener(static_cast(i), + LogListener::LOG_WINDOW_LISTENER); + } } void CLogWindow::SaveSettings() diff --git a/Source/Core/DolphinWX/LogWindow.h b/Source/Core/DolphinWX/LogWindow.h index c3236acd3eae..61fa12f71cb1 100644 --- a/Source/Core/DolphinWX/LogWindow.h +++ b/Source/Core/DolphinWX/LogWindow.h @@ -28,7 +28,6 @@ class CLogWindow : public wxPanel, LogListener CLogWindow(CFrame* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL, const wxString& name = _("Log")); - ~CLogWindow(); void SaveSettings(); void Log(LogTypes::LOG_LEVELS, const char* text) override; @@ -63,5 +62,6 @@ class CLogWindow : public wxPanel, LogListener void OnWrapLineCheck(wxCommandEvent& event); void OnClear(wxCommandEvent& event); void OnLogTimer(wxTimerEvent& WXUNUSED(event)); + void RemoveAllListeners(); void UpdateLog(); };