From 7be639019ec18330e372feb552bf4e0c4114db20 Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Tue, 9 Aug 2022 09:20:33 +0800 Subject: [PATCH] FIX: destory timers & check webview consist Change-Id: If95a973e1b3c6bf0da3611c30e0e44e191c9b06a --- src/slic3r/GUI/MarkdownTip.cpp | 2 ++ src/slic3r/GUI/MarkdownTip.hpp | 6 ++++-- src/slic3r/GUI/Monitor.cpp | 2 +- src/slic3r/GUI/Monitor.hpp | 2 +- src/slic3r/GUI/SelectMachine.cpp | 4 +++- src/slic3r/GUI/SelectMachine.hpp | 4 ++-- src/slic3r/GUI/WebViewDialog.cpp | 7 +++++-- src/slic3r/GUI/Widgets/SideTools.cpp | 2 +- 8 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/slic3r/GUI/MarkdownTip.cpp b/src/slic3r/GUI/MarkdownTip.cpp index c0c25f510..72504b5ce 100644 --- a/src/slic3r/GUI/MarkdownTip.cpp +++ b/src/slic3r/GUI/MarkdownTip.cpp @@ -83,6 +83,8 @@ MarkdownTip::MarkdownTip() _timer->Bind(wxEVT_TIMER, &MarkdownTip::OnTimer, this); } +MarkdownTip::~MarkdownTip() { delete _timer; } + void MarkdownTip::LoadStyle() { _language = GUI::into_u8(GUI::wxGetApp().current_language_code()); diff --git a/src/slic3r/GUI/MarkdownTip.hpp b/src/slic3r/GUI/MarkdownTip.hpp index 8878a064e..0b28ea091 100644 --- a/src/slic3r/GUI/MarkdownTip.hpp +++ b/src/slic3r/GUI/MarkdownTip.hpp @@ -28,6 +28,8 @@ private: MarkdownTip(); + ~MarkdownTip(); + void LoadStyle(); bool ShowTip(wxPoint pos, std::string const &tip, std::string const & tooltip); @@ -48,13 +50,13 @@ private: void OnTimer(wxTimerEvent& event); private: - wxWebView* _tipView = NULL; + wxWebView * _tipView = nullptr; std::string _lastTip; std::string _pendingScript = " "; std::string _language; wxPoint _requestPos; double _lastHeight = 0; - wxTimer* _timer; + wxTimer* _timer = nullptr; bool _hide = false; bool _data_dir = false; }; diff --git a/src/slic3r/GUI/Monitor.cpp b/src/slic3r/GUI/Monitor.cpp index ba8fd6f99..4bf35132f 100644 --- a/src/slic3r/GUI/Monitor.cpp +++ b/src/slic3r/GUI/Monitor.cpp @@ -129,7 +129,7 @@ MonitorPanel::~MonitorPanel() if (m_refresh_timer) m_refresh_timer->Stop(); - + delete m_refresh_timer; } void MonitorPanel::init_bitmap() diff --git a/src/slic3r/GUI/Monitor.hpp b/src/slic3r/GUI/Monitor.hpp index 4517319e3..a554fbc6c 100644 --- a/src/slic3r/GUI/Monitor.hpp +++ b/src/slic3r/GUI/Monitor.hpp @@ -105,7 +105,7 @@ private: wxBitmap m_arrow_img; int last_wifi_signal = -1; - wxTimer* m_refresh_timer; + wxTimer* m_refresh_timer = nullptr; int last_status; bool m_initialized { false }; diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 7d3b6b04d..42b1bb8c7 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -367,6 +367,8 @@ SelectMachinePopup::SelectMachinePopup(wxWindow *parent) Bind(EVT_DISSMISS_MACHINE_LIST, &SelectMachinePopup::on_dissmiss_win, this); } +SelectMachinePopup::~SelectMachinePopup() { delete m_refresh_timer; } + void SelectMachinePopup::Popup(wxWindow *WXUNUSED(focus)) { BOOST_LOG_TRIVIAL(trace) << "get_print_info: start"; @@ -2178,7 +2180,7 @@ bool SelectMachineDialog::Show(bool show) SelectMachineDialog::~SelectMachineDialog() { - ; + delete m_refresh_timer; } EditDevNameDialog::EditDevNameDialog(Plater *plater /*= nullptr*/) diff --git a/src/slic3r/GUI/SelectMachine.hpp b/src/slic3r/GUI/SelectMachine.hpp index 7143f188d..0c8f24d73 100644 --- a/src/slic3r/GUI/SelectMachine.hpp +++ b/src/slic3r/GUI/SelectMachine.hpp @@ -181,7 +181,7 @@ class SelectMachinePopup : public wxPopupTransientWindow { public: SelectMachinePopup(wxWindow *parent); - ~SelectMachinePopup() {} + ~SelectMachinePopup(); // wxPopupTransientWindow virtual methods are all overridden to log them virtual void Popup(wxWindow *focus = NULL) wxOVERRIDE; @@ -359,7 +359,7 @@ protected: void reset_ams_material(); void update_show_status(); - wxTimer *m_refresh_timer; + wxTimer *m_refresh_timer { nullptr }; std::shared_ptr m_print_job; diff --git a/src/slic3r/GUI/WebViewDialog.cpp b/src/slic3r/GUI/WebViewDialog.cpp index 8b3fe8bb2..1e815ac10 100644 --- a/src/slic3r/GUI/WebViewDialog.cpp +++ b/src/slic3r/GUI/WebViewDialog.cpp @@ -398,8 +398,11 @@ void WebViewPanel::OnClose(wxCloseEvent& evt) this->Hide(); } -void WebViewPanel::OnFreshLoginStatus(wxTimerEvent &event) { - Slic3r::GUI::wxGetApp().get_login_info(); +void WebViewPanel::OnFreshLoginStatus(wxTimerEvent &event) +{ + auto mainframe = Slic3r::GUI::wxGetApp().mainframe; + if (mainframe && mainframe->m_webview == this) + Slic3r::GUI::wxGetApp().get_login_info(); } void WebViewPanel::SendRecentList(wxString const &sequence_id) diff --git a/src/slic3r/GUI/Widgets/SideTools.cpp b/src/slic3r/GUI/Widgets/SideTools.cpp index f614b4e32..dfffe1ffb 100644 --- a/src/slic3r/GUI/Widgets/SideTools.cpp +++ b/src/slic3r/GUI/Widgets/SideTools.cpp @@ -36,7 +36,7 @@ namespace Slic3r { namespace GUI { this->Bind(wxEVT_LEFT_UP, &SideTools::on_mouse_left_up, this); } -SideTools::~SideTools() {} +SideTools::~SideTools() { delete m_intetval_timer; } void SideTools::set_none_printer_mode() {