From a314e4b98513d4b5cd89d05e74f93c2b16ebc168 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Tue, 7 Jan 2025 10:12:29 -0300 Subject: [PATCH] QCoreApplication: move the QRecursiveMutex into QCoreApplicationData There's no need for it to be a global, if the data isn't either. I have a vague recollection of the data also being globals back in the day... (they used to be plain QStringList pointers). Pick-to: 6.9 Change-Id: Ie5f1a71d0b20a0195822fffd992101c94824a07f Reviewed-by: Marc Mutz Reviewed-by: Ulf Hermann --- src/corelib/kernel/qcoreapplication.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp index 5d7f71d120e..c5dc9b1a221 100644 --- a/src/corelib/kernel/qcoreapplication.cpp +++ b/src/corelib/kernel/qcoreapplication.cpp @@ -384,6 +384,7 @@ struct QCoreApplicationData #if QT_CONFIG(library) std::unique_ptr app_libpaths; std::unique_ptr manual_libpaths; + QRecursiveMutex libraryPathMutex; // protects this block #endif }; @@ -2921,9 +2922,6 @@ void QCoreApplication::requestPermission(const QPermission &requestedPermission, #endif // QT_CONFIG(permissions) #if QT_CONFIG(library) - -Q_GLOBAL_STATIC(QRecursiveMutex, libraryPathMutex) - /*! Returns a list of paths that the application will search when dynamically loading libraries. @@ -2955,7 +2953,7 @@ Q_GLOBAL_STATIC(QRecursiveMutex, libraryPathMutex) */ QStringList QCoreApplication::libraryPaths() { - QMutexLocker locker(libraryPathMutex()); + QMutexLocker locker(&coreappdata->libraryPathMutex); return libraryPathsLocked(); } @@ -3035,7 +3033,8 @@ QStringList QCoreApplication::libraryPathsLocked() */ void QCoreApplication::setLibraryPaths(const QStringList &paths) { - QMutexLocker locker(libraryPathMutex()); + QCoreApplicationData *d = coreappdata; + QMutexLocker locker(&d->libraryPathMutex); // setLibraryPaths() is considered a "remove everything and then add some new ones" operation. // When the application is constructed it should still amend the paths. So we keep the originals @@ -3077,7 +3076,8 @@ void QCoreApplication::addLibraryPath(const QString &path) if (canonicalPath.isEmpty()) return; - QMutexLocker locker(libraryPathMutex()); + QCoreApplicationData *d = coreappdata; + QMutexLocker locker(&d->libraryPathMutex); QStringList *libpaths = coreappdata()->manual_libpaths.get(); if (libpaths) { @@ -3116,7 +3116,8 @@ void QCoreApplication::removeLibraryPath(const QString &path) if (canonicalPath.isEmpty()) return; - QMutexLocker locker(libraryPathMutex()); + QCoreApplicationData *d = coreappdata; + QMutexLocker locker(&d->libraryPathMutex); QStringList *libpaths = coreappdata()->manual_libpaths.get(); if (libpaths) {