diff options
Diffstat (limited to 'src/corelib/io')
-rw-r--r-- | src/corelib/io/qprocess_unix.cpp | 13 | ||||
-rw-r--r-- | src/corelib/io/qsettings.cpp | 18 |
2 files changed, 14 insertions, 17 deletions
diff --git a/src/corelib/io/qprocess_unix.cpp b/src/corelib/io/qprocess_unix.cpp index d3e45b19d7..9e35978c77 100644 --- a/src/corelib/io/qprocess_unix.cpp +++ b/src/corelib/io/qprocess_unix.cpp @@ -169,16 +169,14 @@ private: }; -Q_GLOBAL_STATIC(QMutex, processManagerGlobalMutex) - static QProcessManager *processManagerInstance = 0; static QProcessManager *processManager() { // The constructor of QProcessManager should be called only once // so we cannot use Q_GLOBAL_STATIC directly for QProcessManager - QMutex *mutex = processManagerGlobalMutex(); - QMutexLocker locker(mutex); + static QBasicMutex processManagerGlobalMutex; + QMutexLocker locker(&processManagerGlobalMutex); if (!processManagerInstance) QProcessPrivate::initializeProcessManager(); @@ -550,10 +548,6 @@ inline pid_t qt_fork() #endif } -#ifdef Q_OS_MAC -Q_GLOBAL_STATIC(QMutex, cfbundleMutex); -#endif - void QProcessPrivate::startProcess() { Q_Q(QProcess); @@ -604,7 +598,8 @@ void QProcessPrivate::startProcess() { // CFBundle is not reentrant, since CFBundleCreate might return a reference // to a cached bundle object. Protect the bundle calls with a mutex lock. - QMutexLocker lock(cfbundleMutex()); + static QBasicMutex cfbundleMutex; + QMutexLocker lock(&cfbundleMutex); QCFType<CFBundleRef> bundle = CFBundleCreate(0, url); url = CFBundleCopyExecutableURL(bundle); } diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp index 3d2ac329ca..2021c42c4d 100644 --- a/src/corelib/io/qsettings.cpp +++ b/src/corelib/io/qsettings.cpp @@ -122,7 +122,9 @@ Q_GLOBAL_STATIC(ConfFileHash, usedHashFunc) Q_GLOBAL_STATIC(ConfFileCache, unusedCacheFunc) Q_GLOBAL_STATIC(PathHash, pathHashFunc) Q_GLOBAL_STATIC(CustomFormatVector, customFormatVectorFunc) -Q_GLOBAL_STATIC(QMutex, globalMutex) + +static QBasicMutex settingsGlobalMutex; + static QSettings::Format globalDefaultFormat = QSettings::NativeFormat; #ifndef Q_OS_WIN @@ -277,7 +279,7 @@ QConfFile *QConfFile::fromName(const QString &fileName, bool _userPerms) ConfFileCache *unusedCache = unusedCacheFunc(); QConfFile *confFile = 0; - QMutexLocker locker(globalMutex()); + QMutexLocker locker(&settingsGlobalMutex); if (!(confFile = usedHash->value(absPath))) { if ((confFile = unusedCache->take(absPath))) @@ -292,7 +294,7 @@ QConfFile *QConfFile::fromName(const QString &fileName, bool _userPerms) void QConfFile::clearCache() { - QMutexLocker locker(globalMutex()); + QMutexLocker locker(&settingsGlobalMutex); unusedCacheFunc()->clear(); } @@ -992,7 +994,7 @@ void QConfFileSettingsPrivate::initFormat() #endif if (format > QSettings::IniFormat) { - QMutexLocker locker(globalMutex()); + QMutexLocker locker(&settingsGlobalMutex); const CustomFormatVector *customFormatVector = customFormatVectorFunc(); int i = (int)format - (int)QSettings::CustomFormat1; @@ -1127,7 +1129,7 @@ static QString getPath(QSettings::Format format, QSettings::Scope scope) Q_ASSERT((int)QSettings::NativeFormat == 0); Q_ASSERT((int)QSettings::IniFormat == 1); - QMutexLocker locker(globalMutex()); + QMutexLocker locker(&settingsGlobalMutex); PathHash *pathHash = pathHashFunc(); if (pathHash->isEmpty()) initDefaultPaths(&locker); @@ -1195,7 +1197,7 @@ QConfFileSettingsPrivate::QConfFileSettingsPrivate(const QString &fileName, QConfFileSettingsPrivate::~QConfFileSettingsPrivate() { - QMutexLocker locker(globalMutex()); + QMutexLocker locker(&settingsGlobalMutex); ConfFileHash *usedHash = usedHashFunc(); ConfFileCache *unusedCache = unusedCacheFunc(); @@ -3437,7 +3439,7 @@ void QSettings::setUserIniPath(const QString &dir) */ void QSettings::setPath(Format format, Scope scope, const QString &path) { - QMutexLocker locker(globalMutex()); + QMutexLocker locker(&settingsGlobalMutex); PathHash *pathHash = pathHashFunc(); if (pathHash->isEmpty()) initDefaultPaths(&locker); @@ -3520,7 +3522,7 @@ QSettings::Format QSettings::registerFormat(const QString &extension, ReadFunc r Q_ASSERT(caseSensitivity == Qt::CaseSensitive); #endif - QMutexLocker locker(globalMutex()); + QMutexLocker locker(&settingsGlobalMutex); CustomFormatVector *customFormatVector = customFormatVectorFunc(); int index = customFormatVector->size(); if (index == 16) // the QSettings::Format enum has room for 16 custom formats |