logic: Fixed crash when start window deleted while checking for update

This commit is contained in:
Eberhard Graether
2018-08-21 13:19:17 +02:00
parent 023c6288d6
commit 4e68de8917
@@ -12,6 +12,7 @@
QtUpdateCheckerWidget::QtUpdateCheckerWidget(QWidget* parent) QtUpdateCheckerWidget::QtUpdateCheckerWidget(QWidget* parent)
: QWidget(parent) : QWidget(parent)
, m_deleteCheck(std::make_shared<bool>(false))
{ {
ApplicationSettings* appSettings = ApplicationSettings::getInstance().get(); ApplicationSettings* appSettings = ApplicationSettings::getInstance().get();
@@ -30,9 +31,17 @@ QtUpdateCheckerWidget::QtUpdateCheckerWidget(QWidget* parent)
{ {
m_button->setText("checking for update..."); m_button->setText("checking for update...");
m_button->setEnabled(false); m_button->setEnabled(false);
std::shared_ptr<bool> deleteCheck = m_deleteCheck;
QTimer::singleShot(250, QTimer::singleShot(250,
[this]() [deleteCheck, this]()
{ {
if (*deleteCheck.get())
{
return;
}
checkUpdate(false); checkUpdate(false);
} }
); );
@@ -60,10 +69,7 @@ QtUpdateCheckerWidget::QtUpdateCheckerWidget(QWidget* parent)
QtUpdateCheckerWidget::~QtUpdateCheckerWidget() QtUpdateCheckerWidget::~QtUpdateCheckerWidget()
{ {
if (m_deleteCheck) *m_deleteCheck.get() = true;
{
*m_deleteCheck.get() = true;
}
} }
void QtUpdateCheckerWidget::checkUpdate(bool force) void QtUpdateCheckerWidget::checkUpdate(bool force)
@@ -71,14 +77,12 @@ void QtUpdateCheckerWidget::checkUpdate(bool force)
m_button->setText("checking for update..."); m_button->setText("checking for update...");
m_button->setEnabled(false); m_button->setEnabled(false);
std::shared_ptr<bool> deleteCheck = std::make_shared<bool>(false); std::shared_ptr<bool> deleteCheck = m_deleteCheck;
m_deleteCheck = deleteCheck;
QtUpdateChecker::check(force, QtUpdateChecker::check(force,
[deleteCheck, this](QtUpdateChecker::Result result) [deleteCheck, this](QtUpdateChecker::Result result)
{ {
bool deleted = *deleteCheck.get(); if (*deleteCheck.get())
if (deleted)
{ {
return; return;
} }