From 1227ad313e529c2b50a5dc992207d7cc7a56f69e Mon Sep 17 00:00:00 2001 From: Eberhard Graether Date: Wed, 23 Aug 2017 16:15:22 +0200 Subject: [PATCH] logic: Fixed automatic update check only works on Qt thread --- src/lib_gui/qt/network/QtRequest.cpp | 2 +- src/lib_gui/qt/network/QtUpdateChecker.cpp | 8 +++++++- src/lib_gui/qt/network/QtUpdateChecker.h | 4 ++++ src/lib_gui/qt/window/QtMainWindow.cpp | 2 -- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/lib_gui/qt/network/QtRequest.cpp b/src/lib_gui/qt/network/QtRequest.cpp index e90391b2..53411d8e 100644 --- a/src/lib_gui/qt/network/QtRequest.cpp +++ b/src/lib_gui/qt/network/QtRequest.cpp @@ -8,7 +8,7 @@ QtRequest::QtRequest() { m_networkManager = new QNetworkAccessManager(this); - QObject::connect(m_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(finished(QNetworkReply*))); + QObject::connect(m_networkManager, &QNetworkAccessManager::finished, this, &QtRequest::finished); } void QtRequest::sendRequest(QString url) diff --git a/src/lib_gui/qt/network/QtUpdateChecker.cpp b/src/lib_gui/qt/network/QtUpdateChecker.cpp index 77338327..0cb8f460 100644 --- a/src/lib_gui/qt/network/QtUpdateChecker.cpp +++ b/src/lib_gui/qt/network/QtUpdateChecker.cpp @@ -53,6 +53,7 @@ void QtUpdateChecker::check(bool force) urlString += ("&platform=" + platformString + "bit").c_str(); // version + // Version::setApplicationVersion(Version::fromString("2017.3.10")); // for debugging urlString += ("&version=" + Version::getApplicationVersion().toDisplayString()).c_str(); // license @@ -147,5 +148,10 @@ void QtUpdateChecker::check(bool force) void QtUpdateChecker::checkUpdate() { - check(); + m_onQtThread( + [this]() + { + check(); + } + ); } diff --git a/src/lib_gui/qt/network/QtUpdateChecker.h b/src/lib_gui/qt/network/QtUpdateChecker.h index eff5d134..f77fc0e8 100644 --- a/src/lib_gui/qt/network/QtUpdateChecker.h +++ b/src/lib_gui/qt/network/QtUpdateChecker.h @@ -1,6 +1,7 @@ #ifndef QT_UPDATE_CHECKER_H #define QT_UPDATE_CHECKER_H +#include "qt/utility/QtThreadedFunctor.h" #include "UpdateChecker.h" class QtUpdateChecker @@ -10,6 +11,9 @@ public: static void check(bool force = false); virtual void checkUpdate() override; + +private: + QtThreadedLambdaFunctor m_onQtThread; }; #endif // QT_UPDATE_CHECKER_H diff --git a/src/lib_gui/qt/window/QtMainWindow.cpp b/src/lib_gui/qt/window/QtMainWindow.cpp index 4271b99c..67e75a62 100644 --- a/src/lib_gui/qt/window/QtMainWindow.cpp +++ b/src/lib_gui/qt/window/QtMainWindow.cpp @@ -16,7 +16,6 @@ #include "component/view/View.h" #include "data/bookmark/Bookmark.h" #include "LicenseChecker.h" -#include "qt/network/QtUpdateChecker.h" #include "qt/utility/QtContextMenu.h" #include "qt/utility/utilityQt.h" #include "qt/view/QtViewWidgetWrapper.h" @@ -360,7 +359,6 @@ void QtMainWindow::keyPressEvent(QKeyEvent* event) break; case Qt::Key_Space: - QtUpdateChecker::check(); PRINT_TRACES(); break; }