From edacd17fab4f3db146c87d4f0c71aa350a2c598b Mon Sep 17 00:00:00 2001 From: Stone Li Date: Fri, 19 Aug 2022 14:26:44 +0800 Subject: [PATCH] FIX: fix crash when close downloadingProgressDialog Change-Id: Ie35bb83223d70d3d343f795bc449998a4df15500 --- src/slic3r/GUI/DownloadProgressDialog.cpp | 11 +++++++++++ src/slic3r/GUI/DownloadProgressDialog.hpp | 3 ++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/DownloadProgressDialog.cpp b/src/slic3r/GUI/DownloadProgressDialog.cpp index f1af5269d..1f2fbe7ec 100644 --- a/src/slic3r/GUI/DownloadProgressDialog.cpp +++ b/src/slic3r/GUI/DownloadProgressDialog.cpp @@ -51,6 +51,8 @@ DownloadProgressDialog::DownloadProgressDialog(wxString title) Layout(); Fit(); CentreOnParent(); + + Bind(wxEVT_CLOSE_WINDOW, &DownloadProgressDialog::on_close, this); } bool DownloadProgressDialog::Show(bool show) @@ -91,6 +93,15 @@ bool DownloadProgressDialog::Show(bool show) return DPIDialog::Show(show); } +void DownloadProgressDialog::on_close(wxCloseEvent& event) +{ + if (m_upgrade_job) { + m_upgrade_job->cancel(); + m_upgrade_job->join(); + } + event.Skip(); +} + DownloadProgressDialog::~DownloadProgressDialog() {} void DownloadProgressDialog::on_dpi_changed(const wxRect &suggested_rect) {} diff --git a/src/slic3r/GUI/DownloadProgressDialog.hpp b/src/slic3r/GUI/DownloadProgressDialog.hpp index fcb44a208..b35d206d1 100644 --- a/src/slic3r/GUI/DownloadProgressDialog.hpp +++ b/src/slic3r/GUI/DownloadProgressDialog.hpp @@ -33,6 +33,7 @@ class DownloadProgressDialog : public DPIDialog { protected: bool Show(bool show) override; + void on_close(wxCloseEvent& event); public: DownloadProgressDialog(wxString title); @@ -42,7 +43,7 @@ public: void update_release_note(std::string release_note, std::string version); std::shared_ptr m_status_bar; - std::shared_ptr m_upgrade_job; + std::shared_ptr m_upgrade_job { nullptr }; wxPanel * m_panel_download;