diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2019-06-28 16:23:49 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2019-08-01 13:15:39 +0300 |
commit | d89a4269ce1d9729842a508d97e1f1aeaf7305ee (patch) | |
tree | 0f13df650acb187ca8b1cc05c17b9577cb3e4cab /src/multimedia/audio | |
parent | 435557691c3c28e9c63aa4bb5f4b9ec8fe3f8923 (diff) |
Port from QMutex::Recursive to QRecursiveMutex
Also port from QMutexLocker to std::lock_guard or std::unique_lock, as
the former will not support QRecursiveMutex going forward.
Change-Id: I1ed1a129e2b9b77aa0a729e8cab03c673566a345
Reviewed-by: VaL Doroshchuk <valentyn.doroshchuk@qt.io>
Diffstat (limited to 'src/multimedia/audio')
-rw-r--r-- | src/multimedia/audio/qsamplecache_p.cpp | 18 | ||||
-rw-r--r-- | src/multimedia/audio/qsamplecache_p.h | 2 |
2 files changed, 11 insertions, 9 deletions
diff --git a/src/multimedia/audio/qsamplecache_p.cpp b/src/multimedia/audio/qsamplecache_p.cpp index 35234f8bb..8c4fdc210 100644 --- a/src/multimedia/audio/qsamplecache_p.cpp +++ b/src/multimedia/audio/qsamplecache_p.cpp @@ -47,6 +47,8 @@ #include <QtCore/QDebug> //#define QT_SAMPLECACHE_DEBUG +#include <mutex> + QT_BEGIN_NAMESPACE @@ -98,7 +100,6 @@ QT_BEGIN_NAMESPACE QSampleCache::QSampleCache(QObject *parent) : QObject(parent) , m_networkAccessManager(nullptr) - , m_mutex(QMutex::Recursive) , m_capacity(0) , m_usage(0) , m_loadingRefCount(0) @@ -117,7 +118,7 @@ QNetworkAccessManager& QSampleCache::networkAccessManager() QSampleCache::~QSampleCache() { - QMutexLocker m(&m_mutex); + const std::lock_guard<QRecursiveMutex> locker(m_mutex); m_loadingThread.quit(); m_loadingThread.wait(); @@ -157,7 +158,7 @@ bool QSampleCache::isLoading() const bool QSampleCache::isCached(const QUrl &url) const { - QMutexLocker locker(&m_mutex); + const std::lock_guard<QRecursiveMutex> locker(m_mutex); return m_samples.contains(url); } @@ -174,7 +175,7 @@ QSample* QSampleCache::requestSample(const QUrl& url) #ifdef QT_SAMPLECACHE_DEBUG qDebug() << "QSampleCache: request sample [" << url << "]"; #endif - QMutexLocker locker(&m_mutex); + std::unique_lock<QRecursiveMutex> locker(m_mutex); QMap<QUrl, QSample*>::iterator it = m_samples.find(url); QSample* sample; if (it == m_samples.end()) { @@ -194,7 +195,7 @@ QSample* QSampleCache::requestSample(const QUrl& url) void QSampleCache::setCapacity(qint64 capacity) { - QMutexLocker locker(&m_mutex); + const std::lock_guard<QRecursiveMutex> locker(m_mutex); if (m_capacity == capacity) return; #ifdef QT_SAMPLECACHE_DEBUG @@ -227,7 +228,7 @@ void QSampleCache::unloadSample(QSample *sample) // Called in both threads void QSampleCache::refresh(qint64 usageChange) { - QMutexLocker locker(&m_mutex); + const std::lock_guard<QRecursiveMutex> locker(m_mutex); m_usage += usageChange; if (m_capacity <= 0 || m_usage <= m_capacity) return; @@ -265,7 +266,7 @@ void QSampleCache::refresh(qint64 usageChange) // Called in both threads void QSampleCache::removeUnreferencedSample(QSample *sample) { - QMutexLocker m(&m_mutex); + const std::lock_guard<QRecursiveMutex> locker(m_mutex); m_staleSamples.remove(sample); } @@ -301,7 +302,8 @@ bool QSampleCache::notifyUnreferencedSample(QSample* sample) if (m_loadingThread.isRunning()) m_loadingThread.wait(); - QMutexLocker locker(&m_mutex); + const std::lock_guard<QRecursiveMutex> locker(m_mutex); + if (m_capacity > 0) return false; m_samples.remove(sample->m_url); diff --git a/src/multimedia/audio/qsamplecache_p.h b/src/multimedia/audio/qsamplecache_p.h index 094e3281e..4c2384743 100644 --- a/src/multimedia/audio/qsamplecache_p.h +++ b/src/multimedia/audio/qsamplecache_p.h @@ -143,7 +143,7 @@ private: QMap<QUrl, QSample*> m_samples; QSet<QSample*> m_staleSamples; QNetworkAccessManager *m_networkAccessManager; - mutable QMutex m_mutex; + mutable QRecursiveMutex m_mutex; qint64 m_capacity; qint64 m_usage; QThread m_loadingThread; |