summaryrefslogtreecommitdiffstats
path: root/src/network
diff options
context:
space:
mode:
Diffstat (limited to 'src/network')
-rw-r--r--src/network/kernel/qnetworkinformation.cpp19
1 files changed, 8 insertions, 11 deletions
diff --git a/src/network/kernel/qnetworkinformation.cpp b/src/network/kernel/qnetworkinformation.cpp
index 9696a4fcc2..d10024bf05 100644
--- a/src/network/kernel/qnetworkinformation.cpp
+++ b/src/network/kernel/qnetworkinformation.cpp
@@ -168,22 +168,21 @@ QNetworkInformation *QNetworkInformationPrivate::create(QStringView name)
{
if (!dataHolder())
return nullptr;
- QMutexLocker locker(&dataHolder->instanceMutex);
#ifdef DEBUG_LOADING
qDebug().nospace() << "create() called with name=\"" << name
<< "\". instanceHolder initialized? " << !!dataHolder->instanceHolder;
#endif
- if (dataHolder->instanceHolder)
- return dataHolder->instanceHolder.get();
-
- locker.unlock();
if (!initializeList()) {
#ifdef DEBUG_LOADING
qDebug("Failed to initialize list, returning.");
#endif
return nullptr;
}
- locker.relock();
+
+ QMutexLocker locker(&dataHolder->instanceMutex);
+ if (dataHolder->instanceHolder)
+ return dataHolder->instanceHolder.get();
+
QNetworkInformationBackend *backend = nullptr;
if (!name.isEmpty()) {
@@ -231,24 +230,22 @@ QNetworkInformation *QNetworkInformationPrivate::create(QNetworkInformation::Fea
{
if (!dataHolder())
return nullptr;
- QMutexLocker locker(&dataHolder->instanceMutex);
#ifdef DEBUG_LOADING
qDebug().nospace() << "create() called with features=\"" << features
<< "\". instanceHolder initialized? " << !!dataHolder->instanceHolder;
#endif
- if (dataHolder->instanceHolder)
- return dataHolder->instanceHolder.get();
if (features == 0)
return nullptr;
- locker.unlock();
if (!initializeList()) {
#ifdef DEBUG_LOADING
qDebug("Failed to initialize list, returning.");
#endif
return nullptr;
}
- locker.relock();
+ QMutexLocker locker(&dataHolder->instanceMutex);
+ if (dataHolder->instanceHolder)
+ return dataHolder->instanceHolder.get();
const auto supportsRequestedFeatures = [features](QNetworkInformationBackendFactory *factory) {
return factory && (factory->featuresSupported() & features) == features;