diff options
author | Jarek Kobus <jaroslaw.kobus@qt.io> | 2022-10-10 15:59:26 +0200 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@qt.io> | 2022-10-11 07:34:12 +0000 |
commit | f5f3bbcc59144ea3b5152678f2001ac87c471efa (patch) | |
tree | 1cc08cdd5290a52ecc57b724c554a37e94fd913b | |
parent | 862a3923f47c348c8629fdd2ce1b38f33a3999aa (diff) |
Use more Utils::isMainThread()
Change-Id: Ia3c6f6dca53c5d7487b0813de16f06c52af47aa5
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
-rw-r--r-- | src/libs/extensionsystem/pluginmanager.cpp | 5 | ||||
-rw-r--r-- | src/libs/qmljs/qmljsmodelmanagerinterface.cpp | 3 | ||||
-rw-r--r-- | src/libs/utils/processreaper.cpp | 3 | ||||
-rw-r--r-- | src/libs/utils/qtcprocess.cpp | 26 | ||||
-rw-r--r-- | src/libs/utils/singleton.cpp | 5 | ||||
-rw-r--r-- | src/plugins/cppeditor/stringtable.cpp | 2 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projectnodes.cpp | 10 | ||||
-rw-r--r-- | src/plugins/projectexplorer/taskhub.cpp | 4 | ||||
-rw-r--r-- | src/plugins/projectexplorer/windebuginterface.cpp | 3 | ||||
-rw-r--r-- | src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp | 16 | ||||
-rw-r--r-- | src/plugins/resourceeditor/resourceeditorplugin.cpp | 2 | ||||
-rw-r--r-- | src/tools/processlauncher/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/tools/processlauncher/processlauncher.qbs | 2 |
13 files changed, 37 insertions, 46 deletions
diff --git a/src/libs/extensionsystem/pluginmanager.cpp b/src/libs/extensionsystem/pluginmanager.cpp index 01811c33c5..5937a6d639 100644 --- a/src/libs/extensionsystem/pluginmanager.cpp +++ b/src/libs/extensionsystem/pluginmanager.cpp @@ -35,6 +35,7 @@ #include <utils/qtcassert.h> #include <utils/qtcprocess.h> #include <utils/qtcsettings.h> +#include <utils/threadutils.h> #ifdef WITH_TESTS #include <utils/hostosinfo.h> @@ -851,7 +852,7 @@ bool PluginManager::finishScenario() // Waits until the running scenario is fully initialized void PluginManager::waitForScenarioFullyInitialized() { - if (QThread::currentThread() == qApp->thread()) { + if (isMainThread()) { qWarning("The waitForScenarioFullyInitialized() function can't be called from main thread."); return; } @@ -1378,7 +1379,7 @@ void PluginManagerPrivate::shutdown() #ifdef WITH_TESTS if (PluginManager::isScenarioRunning("TestModelManagerInterface")) { qDebug() << "Point 2: Expect the next call to Point 3 triggers a crash"; - QThread::currentThread()->sleep(5); + QThread::sleep(5); } #endif if (!allObjects.isEmpty()) { diff --git a/src/libs/qmljs/qmljsmodelmanagerinterface.cpp b/src/libs/qmljs/qmljsmodelmanagerinterface.cpp index c39c48415d..fc31c30e1b 100644 --- a/src/libs/qmljs/qmljsmodelmanagerinterface.cpp +++ b/src/libs/qmljs/qmljsmodelmanagerinterface.cpp @@ -7,7 +7,6 @@ #include "qmljsinterpreter.h" #include "qmljsmodelmanagerinterface.h" #include "qmljsplugindumper.h" -#include "qmljstypedescriptionreader.h" #include "qmljsdialect.h" #include "qmljsviewercontext.h" #include "qmljsutils.h" @@ -989,7 +988,7 @@ void ModelManagerInterface::parseLoop(QSet<Utils::FilePath> &scannedPaths, ExtensionSystem::PluginManager::waitForScenarioFullyInitialized(); if (ExtensionSystem::PluginManager::finishScenario()) { qDebug() << "Point 1: Shutdown triggered"; - QThread::currentThread()->sleep(2); + QThread::sleep(2); qDebug() << "Point 3: If Point 2 was already reached, expect a crash now"; } } diff --git a/src/libs/utils/processreaper.cpp b/src/libs/utils/processreaper.cpp index 8f247ba309..2638b09b1e 100644 --- a/src/libs/utils/processreaper.cpp +++ b/src/libs/utils/processreaper.cpp @@ -4,6 +4,7 @@ #include "processreaper.h" #include "processutils.h" #include "qtcassert.h" +#include "threadutils.h" #include <QCoreApplication> #include <QDebug> @@ -224,7 +225,7 @@ ProcessReaper::ProcessReaper() ProcessReaper::~ProcessReaper() { - QTC_CHECK(QThread::currentThread() == qApp->thread()); + QTC_CHECK(isMainThread()); QMutexLocker locker(&s_instanceMutex); instance()->m_private->waitForFinished(); m_thread.quit(); diff --git a/src/libs/utils/qtcprocess.cpp b/src/libs/utils/qtcprocess.cpp index 7ddce61763..f0f6170f88 100644 --- a/src/libs/utils/qtcprocess.cpp +++ b/src/libs/utils/qtcprocess.cpp @@ -12,6 +12,7 @@ #include "processreaper.h" #include "processutils.h" #include "terminalprocess_p.h" +#include "threadutils.h" #include <QCoreApplication> #include <QDebug> @@ -62,25 +63,25 @@ public: timer.start(); auto cleanup = qScopeGuard([this, &timer] { const qint64 currentNsecs = timer.nsecsElapsed(); - const bool isMainThread = QThread::currentThread() == qApp->thread(); + const bool mainThread = isMainThread(); const int hitThisAll = m_hitThisAll.fetch_add(1) + 1; const int hitAllAll = m_hitAllAll.fetch_add(1) + 1; - const int hitThisMain = isMainThread + const int hitThisMain = mainThread ? m_hitThisMain.fetch_add(1) + 1 : m_hitThisMain.load(); - const int hitAllMain = isMainThread + const int hitAllMain = mainThread ? m_hitAllMain.fetch_add(1) + 1 : m_hitAllMain.load(); const qint64 totalThisAll = toMs(m_totalThisAll.fetch_add(currentNsecs) + currentNsecs); const qint64 totalAllAll = toMs(m_totalAllAll.fetch_add(currentNsecs) + currentNsecs); - const qint64 totalThisMain = toMs(isMainThread + const qint64 totalThisMain = toMs(mainThread ? m_totalThisMain.fetch_add(currentNsecs) + currentNsecs : m_totalThisMain.load()); - const qint64 totalAllMain = toMs(isMainThread + const qint64 totalAllMain = toMs(mainThread ? m_totalAllMain.fetch_add(currentNsecs) + currentNsecs : m_totalAllMain.load()); printMeasurement(QLatin1String(m_functionName), hitThisAll, toMs(currentNsecs), - totalThisAll, hitAllAll, totalAllAll, isMainThread, + totalThisAll, hitAllAll, totalAllAll, mainThread, hitThisMain, totalThisMain, hitAllMain, totalAllMain); }); return std::invoke(std::forward<Function>(function), std::forward<Args>(args)...); @@ -1212,7 +1213,7 @@ void QtcProcess::setRemoteProcessHooks(const DeviceProcessHooks &hooks) static bool askToKill(const QString &command) { #ifdef QT_GUI_LIB - if (QThread::currentThread() != QCoreApplication::instance()->thread()) + if (!isMainThread()) return true; const QString title = QtcProcess::tr("Process Not Responding"); QString msg = command.isEmpty() ? @@ -1775,13 +1776,6 @@ void QtcProcess::setWriteData(const QByteArray &writeData) d->m_setup.m_writeData = writeData; } -#ifdef QT_GUI_LIB -static bool isGuiThread() -{ - return QThread::currentThread() == QCoreApplication::instance()->thread(); -} -#endif - void QtcProcess::runBlocking(EventLoopMode eventLoopMode) { // Attach a dynamic property with info about blocking type @@ -1802,7 +1796,7 @@ void QtcProcess::runBlocking(EventLoopMode eventLoopMode) timer.setInterval(1000); timer.start(); #ifdef QT_GUI_LIB - if (isGuiThread()) + if (isMainThread()) QApplication::setOverrideCursor(Qt::WaitCursor); #endif QEventLoop eventLoop(this); @@ -1812,7 +1806,7 @@ void QtcProcess::runBlocking(EventLoopMode eventLoopMode) d->m_eventLoop = nullptr; timer.stop(); #ifdef QT_GUI_LIB - if (isGuiThread()) + if (isMainThread()) QApplication::restoreOverrideCursor(); #endif } diff --git a/src/libs/utils/singleton.cpp b/src/libs/utils/singleton.cpp index 474b6bd0e8..cbf7aa2178 100644 --- a/src/libs/utils/singleton.cpp +++ b/src/libs/utils/singleton.cpp @@ -3,10 +3,9 @@ #include "qtcassert.h" #include "singleton.h" +#include "threadutils.h" -#include <QCoreApplication> #include <QList> -#include <QThread> #include <unordered_map> @@ -45,7 +44,7 @@ SingletonStaticData &Singleton::staticData(std::type_index index) // only. void Singleton::deleteAll() { - QTC_ASSERT(QThread::currentThread() == qApp->thread(), return); + QTC_ASSERT(isMainThread(), return); QList<Singleton *> oldList; { QMutexLocker locker(&s_mutex); diff --git a/src/plugins/cppeditor/stringtable.cpp b/src/plugins/cppeditor/stringtable.cpp index 737c3dd3d0..6f0ef89b18 100644 --- a/src/plugins/cppeditor/stringtable.cpp +++ b/src/plugins/cppeditor/stringtable.cpp @@ -119,7 +119,7 @@ void StringTablePrivate::GC(QFutureInterface<void> &futureInterface) #ifdef WITH_TESTS if (ExtensionSystem::PluginManager::isScenarioRunning("TestStringTable")) { if (ExtensionSystem::PluginManager::finishScenario()) - QThread::currentThread()->sleep(5); + QThread::sleep(5); } #endif diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index 68d482264a..27223f066e 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -3,11 +3,9 @@ #include "projectnodes.h" -#include "buildconfiguration.h" #include "buildsystem.h" #include "project.h" #include "projectexplorerconstants.h" -#include "projecttree.h" #include "target.h" #include <coreplugin/icore.h> @@ -21,14 +19,12 @@ #include <utils/pointeralgorithm.h> #include <utils/qtcassert.h> #include <utils/stringutils.h> +#include <utils/threadutils.h> #include <utils/utilsicons.h> #include <QDir> #include <QFileInfo> #include <QIcon> -#include <QStyle> -#include <QThread> -#include <QTimer> #include <memory> @@ -445,7 +441,7 @@ QString FolderNode::displayName() const */ QIcon FolderNode::icon() const { - QTC_CHECK(QThread::currentThread() == QCoreApplication::instance()->thread()); + QTC_CHECK(isMainThread()); // Instantiating the Icon provider is expensive. if (auto strPtr = std::get_if<QString>(&m_icon)) { @@ -1063,7 +1059,7 @@ DirectoryIcon::DirectoryIcon(const QString &overlay) */ QIcon DirectoryIcon::icon() const { - QTC_CHECK(QThread::currentThread() == QCoreApplication::instance()->thread()); + QTC_CHECK(isMainThread()); const auto it = m_cache.find(m_overlay); if (it != m_cache.end()) return it.value(); diff --git a/src/plugins/projectexplorer/taskhub.cpp b/src/plugins/projectexplorer/taskhub.cpp index e05d732242..3bb63b42b8 100644 --- a/src/plugins/projectexplorer/taskhub.cpp +++ b/src/plugins/projectexplorer/taskhub.cpp @@ -9,10 +9,10 @@ #include <texteditor/textmark.h> #include <utils/qtcassert.h> #include <utils/theme/theme.h> +#include <utils/threadutils.h> #include <utils/utilsicons.h> #include <QApplication> -#include <QThread> using namespace Utils; @@ -131,7 +131,7 @@ void TaskHub::addTask(Task::TaskType type, const QString &description, Utils::Id void TaskHub::addTask(Task task) { - if (QThread::currentThread() != qApp->thread()) { + if (!isMainThread()) { QMetaObject::invokeMethod(qApp, [task = std::move(task)] { TaskHub::addTask(task); }); diff --git a/src/plugins/projectexplorer/windebuginterface.cpp b/src/plugins/projectexplorer/windebuginterface.cpp index a27d350095..8952f53246 100644 --- a/src/plugins/projectexplorer/windebuginterface.cpp +++ b/src/plugins/projectexplorer/windebuginterface.cpp @@ -6,6 +6,7 @@ #ifdef Q_OS_WIN #include <utils/qtcassert.h> +#include <utils/threadutils.h> #include <QCoreApplication> #include <qt_windows.h> @@ -146,7 +147,7 @@ void WinDebugInterface::emitReadySignal() void WinDebugInterface::dispatchDebugOutput() { // Called in the thread this object was created in, not in the WinDebugInterfaceThread. - QTC_ASSERT(QThread::currentThread() == QCoreApplication::instance()->thread(), return); + QTC_ASSERT(Utils::isMainThread(), return); static size_t maxMessagesToSend = 100; std::vector<std::pair<qint64, QString>> output; diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp index dfc5667199..9ccabce38f 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp @@ -29,7 +29,6 @@ #include "nodeabstractproperty.h" #include "nodeinstanceserverproxy.h" #include "nodelistproperty.h" -#include "nodeproperty.h" #include "pixmapchangedcommand.h" #include "puppettocreatorcommand.h" #include "qml3dnode.h" @@ -84,19 +83,18 @@ #include <utils/qtcassert.h> #include <utils/qtcprocess.h> #include <utils/theme/theme.h> +#include <utils/threadutils.h> #include <qtsupport/qtkitinformation.h> -#include <QUrl> -#include <QMultiHash> -#include <QTimerEvent> -#include <QPicture> -#include <QPainter> #include <QDirIterator> #include <QFileSystemWatcher> +#include <QMultiHash> +#include <QPainter> +#include <QPicture> #include <QScopedPointer> -#include <QThread> -#include <QApplication> +#include <QTimerEvent> +#include <QUrl> enum { debug = false @@ -261,7 +259,7 @@ void NodeInstanceView::modelAttached(Model *model) // If model gets attached on non-main thread of the application, do not attempt to monitor // file changes. Such models are typically short lived for specific purpose, and timers // will not work at all, if the thread is not based on QThread. - if (QThread::currentThread() == qApp->thread()) { + if (Utils::isMainThread()) { m_generateQsbFilesTimer.stop(); m_qsbTargets.clear(); updateQsbPathToFilterMap(); diff --git a/src/plugins/resourceeditor/resourceeditorplugin.cpp b/src/plugins/resourceeditor/resourceeditorplugin.cpp index ddfaa7d27a..e96bf888cb 100644 --- a/src/plugins/resourceeditor/resourceeditorplugin.cpp +++ b/src/plugins/resourceeditor/resourceeditorplugin.cpp @@ -28,10 +28,8 @@ #include <utils/parameteraction.h> #include <utils/qtcassert.h> #include <utils/stringutils.h> -#include <utils/threadutils.h> #include <QAction> -#include <QCoreApplication> #include <QDebug> #include <QDialogButtonBox> #include <QFormLayout> diff --git a/src/tools/processlauncher/CMakeLists.txt b/src/tools/processlauncher/CMakeLists.txt index 25b3b461ee..6efcafbc00 100644 --- a/src/tools/processlauncher/CMakeLists.txt +++ b/src/tools/processlauncher/CMakeLists.txt @@ -21,6 +21,8 @@ add_qtc_executable(qtcreator_processlauncher ${UTILSDIR}/qtcassert.h ${UTILSDIR}/singleton.cpp ${UTILSDIR}/singleton.h + ${UTILSDIR}/threadutils.cpp + ${UTILSDIR}/threadutils.h ) if (MSVC) diff --git a/src/tools/processlauncher/processlauncher.qbs b/src/tools/processlauncher/processlauncher.qbs index f56ff489cb..757d50f9bb 100644 --- a/src/tools/processlauncher/processlauncher.qbs +++ b/src/tools/processlauncher/processlauncher.qbs @@ -40,6 +40,8 @@ QtcTool { "qtcassert.h", "singleton.cpp", "singleton.h", + "threadutils.cpp", + "threadutils.h", ] } } |