From fedd98e6180610b0ce981708612abfdadf8b1f38 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Sun, 30 Jun 2019 17:36:43 +0000 Subject: [PATCH] avoid locks where possible in QDeclarativeEnginePrivate Signed-off-by: Ivailo Monev --- src/declarative/qml/qdeclarativeengine.cpp | 31 +++++++++--------------------- src/declarative/qml/qdeclarativeengine_p.h | 6 +++--- 2 files changed, 12 insertions(+), 25 deletions(-) diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index 1ca47a783..49f382aa1 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -669,15 +669,11 @@ QDeclarativeNetworkAccessManagerFactory *QDeclarativeEngine::networkAccessManage QNetworkAccessManager *QDeclarativeEnginePrivate::createNetworkAccessManager(QObject *parent) const { - QMutexLocker locker(&mutex); - QNetworkAccessManager *nam; if (networkAccessManagerFactory) { - nam = networkAccessManagerFactory->create(parent); - } else { - nam = new QNetworkAccessManager(parent); + return networkAccessManagerFactory->create(parent); } - return nam; + return new QNetworkAccessManager(parent); } QNetworkAccessManager *QDeclarativeEnginePrivate::getNetworkAccessManager() const @@ -734,7 +730,6 @@ void QDeclarativeEngine::addImageProvider(const QString &providerId, QDeclarativ QDeclarativeImageProvider *QDeclarativeEngine::imageProvider(const QString &providerId) const { Q_D(const QDeclarativeEngine); - QMutexLocker locker(&d->mutex); return d->imageProviders.value(providerId).data(); } @@ -752,40 +747,32 @@ void QDeclarativeEngine::removeImageProvider(const QString &providerId) d->imageProviders.take(providerId); } -QDeclarativeImageProvider::ImageType QDeclarativeEnginePrivate::getImageProviderType(const QUrl &url) +QDeclarativeImageProvider::ImageType QDeclarativeEnginePrivate::getImageProviderType(const QUrl &url) const { - QMutexLocker locker(&mutex); QSharedPointer provider = imageProviders.value(url.host()); - locker.unlock(); if (provider) return provider->imageType(); return static_cast(-1); } -QImage QDeclarativeEnginePrivate::getImageFromProvider(const QUrl &url, QSize *size, const QSize& req_size) +QImage QDeclarativeEnginePrivate::getImageFromProvider(const QUrl &url, QSize *size, const QSize& req_size) const { - QMutexLocker locker(&mutex); - QImage image; QSharedPointer provider = imageProviders.value(url.host()); - locker.unlock(); if (provider) { QString imageId = url.toString(QUrl::RemoveScheme | QUrl::RemoveAuthority).mid(1); - image = provider->requestImage(imageId, size, req_size); + return provider->requestImage(imageId, size, req_size); } - return image; + return QImage(); } -QPixmap QDeclarativeEnginePrivate::getPixmapFromProvider(const QUrl &url, QSize *size, const QSize& req_size) +QPixmap QDeclarativeEnginePrivate::getPixmapFromProvider(const QUrl &url, QSize *size, const QSize& req_size) const { - QMutexLocker locker(&mutex); - QPixmap pixmap; QSharedPointer provider = imageProviders.value(url.host()); - locker.unlock(); if (provider) { QString imageId = url.toString(QUrl::RemoveScheme | QUrl::RemoveAuthority).mid(1); - pixmap = provider->requestPixmap(imageId, size, req_size); + return provider->requestPixmap(imageId, size, req_size); } - return pixmap; + return QPixmap(); } /*! diff --git a/src/declarative/qml/qdeclarativeengine_p.h b/src/declarative/qml/qdeclarativeengine_p.h index 940ed26ea..ca641e05b 100644 --- a/src/declarative/qml/qdeclarativeengine_p.h +++ b/src/declarative/qml/qdeclarativeengine_p.h @@ -218,9 +218,9 @@ public: mutable QDeclarativeNetworkAccessManagerFactory *networkAccessManagerFactory; QHash > imageProviders; - QDeclarativeImageProvider::ImageType getImageProviderType(const QUrl &url); - QImage getImageFromProvider(const QUrl &url, QSize *size, const QSize& req_size); - QPixmap getPixmapFromProvider(const QUrl &url, QSize *size, const QSize& req_size); + QDeclarativeImageProvider::ImageType getImageProviderType(const QUrl &url) const; + QImage getImageFromProvider(const QUrl &url, QSize *size, const QSize& req_size) const; + QPixmap getPixmapFromProvider(const QUrl &url, QSize *size, const QSize& req_size) const; mutable QMutex mutex; -- 2.11.0