From 4e68de8917f9567309c6a3bef7e847dc8ff68f3d Mon Sep 17 00:00:00 2001 From: Eberhard Graether Date: Tue, 21 Aug 2018 13:19:17 +0200 Subject: [PATCH] logic: Fixed crash when start window deleted while checking for update --- .../qt/element/QtUpdateCheckerWidget.cpp | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/lib_gui/qt/element/QtUpdateCheckerWidget.cpp b/src/lib_gui/qt/element/QtUpdateCheckerWidget.cpp index cee39da7..c7b016e8 100644 --- a/src/lib_gui/qt/element/QtUpdateCheckerWidget.cpp +++ b/src/lib_gui/qt/element/QtUpdateCheckerWidget.cpp @@ -12,6 +12,7 @@ QtUpdateCheckerWidget::QtUpdateCheckerWidget(QWidget* parent) : QWidget(parent) + , m_deleteCheck(std::make_shared(false)) { ApplicationSettings* appSettings = ApplicationSettings::getInstance().get(); @@ -30,9 +31,17 @@ QtUpdateCheckerWidget::QtUpdateCheckerWidget(QWidget* parent) { m_button->setText("checking for update..."); m_button->setEnabled(false); + + std::shared_ptr deleteCheck = m_deleteCheck; + QTimer::singleShot(250, - [this]() + [deleteCheck, this]() { + if (*deleteCheck.get()) + { + return; + } + checkUpdate(false); } ); @@ -60,10 +69,7 @@ QtUpdateCheckerWidget::QtUpdateCheckerWidget(QWidget* parent) QtUpdateCheckerWidget::~QtUpdateCheckerWidget() { - if (m_deleteCheck) - { - *m_deleteCheck.get() = true; - } + *m_deleteCheck.get() = true; } void QtUpdateCheckerWidget::checkUpdate(bool force) @@ -71,14 +77,12 @@ void QtUpdateCheckerWidget::checkUpdate(bool force) m_button->setText("checking for update..."); m_button->setEnabled(false); - std::shared_ptr deleteCheck = std::make_shared(false); - m_deleteCheck = deleteCheck; + std::shared_ptr deleteCheck = m_deleteCheck; QtUpdateChecker::check(force, [deleteCheck, this](QtUpdateChecker::Result result) { - bool deleted = *deleteCheck.get(); - if (deleted) + if (*deleteCheck.get()) { return; }