diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2019-07-01 19:44:47 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2019-07-02 08:29:26 +0000 |
commit | 7fb4d91ce7206d3196f4c1444d0dc53fbf558278 (patch) | |
tree | fb8b972ea4959d4c1895e69777c1d5c8f45d2f0f | |
parent | b85c2deccae3006468eaf3023d5b3bf802739747 (diff) |
QQmlEngine: Hoist some allocating code out of critical sections
... so the lock is held for shorter durations.
Add optimistic std::move()s.
Change-Id: I9e09e11a6e54b7ac4be3e23f06d65b3b7abc4fc0
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
-rw-r--r-- | src/qml/qml/qqmlengine.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/qml/qml/qqmlengine.cpp b/src/qml/qml/qqmlengine.cpp index 4d73d72655..e726e0810d 100644 --- a/src/qml/qml/qqmlengine.cpp +++ b/src/qml/qml/qqmlengine.cpp @@ -1171,8 +1171,9 @@ void QQmlEnginePrivate::registerFinalizeCallback(QObject *obj, int index) QSharedPointer<QQmlImageProviderBase> QQmlEnginePrivate::imageProvider(const QString &providerId) const { + const QString providerIdLower = providerId.toLower(); QMutexLocker locker(&mutex); - return imageProviders.value(providerId.toLower()); + return imageProviders.value(providerIdLower); } #if QT_CONFIG(qml_network) @@ -1264,8 +1265,10 @@ QNetworkAccessManager *QQmlEngine::networkAccessManager() const void QQmlEngine::addImageProvider(const QString &providerId, QQmlImageProviderBase *provider) { Q_D(QQmlEngine); + QString providerIdLower = providerId.toLower(); + QSharedPointer<QQmlImageProviderBase> sp(provider); QMutexLocker locker(&d->mutex); - d->imageProviders.insert(providerId.toLower(), QSharedPointer<QQmlImageProviderBase>(provider)); + d->imageProviders.insert(std::move(providerIdLower), std::move(sp)); } /*! @@ -1276,8 +1279,9 @@ void QQmlEngine::addImageProvider(const QString &providerId, QQmlImageProviderBa QQmlImageProviderBase *QQmlEngine::imageProvider(const QString &providerId) const { Q_D(const QQmlEngine); + const QString providerIdLower = providerId.toLower(); QMutexLocker locker(&d->mutex); - return d->imageProviders.value(providerId.toLower()).data(); + return d->imageProviders.value(providerIdLower).data(); } /*! @@ -1288,8 +1292,9 @@ QQmlImageProviderBase *QQmlEngine::imageProvider(const QString &providerId) cons void QQmlEngine::removeImageProvider(const QString &providerId) { Q_D(QQmlEngine); + const QString providerIdLower = providerId.toLower(); QMutexLocker locker(&d->mutex); - d->imageProviders.take(providerId.toLower()); + d->imageProviders.take(providerIdLower); } /*! |