aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJarek Kobus <jaroslaw.kobus@qt.io>2022-10-10 15:59:26 +0200
committerJarek Kobus <jaroslaw.kobus@qt.io>2022-10-11 07:34:12 +0000
commitf5f3bbcc59144ea3b5152678f2001ac87c471efa (patch)
tree1cc08cdd5290a52ecc57b724c554a37e94fd913b
parent862a3923f47c348c8629fdd2ce1b38f33a3999aa (diff)
Use more Utils::isMainThread()
Change-Id: Ia3c6f6dca53c5d7487b0813de16f06c52af47aa5 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
-rw-r--r--src/libs/extensionsystem/pluginmanager.cpp5
-rw-r--r--src/libs/qmljs/qmljsmodelmanagerinterface.cpp3
-rw-r--r--src/libs/utils/processreaper.cpp3
-rw-r--r--src/libs/utils/qtcprocess.cpp26
-rw-r--r--src/libs/utils/singleton.cpp5
-rw-r--r--src/plugins/cppeditor/stringtable.cpp2
-rw-r--r--src/plugins/projectexplorer/projectnodes.cpp10
-rw-r--r--src/plugins/projectexplorer/taskhub.cpp4
-rw-r--r--src/plugins/projectexplorer/windebuginterface.cpp3
-rw-r--r--src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp16
-rw-r--r--src/plugins/resourceeditor/resourceeditorplugin.cpp2
-rw-r--r--src/tools/processlauncher/CMakeLists.txt2
-rw-r--r--src/tools/processlauncher/processlauncher.qbs2
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",
]
}
}