summaryrefslogtreecommitdiffstats
path: root/src/multimedia/audio
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2019-06-28 16:23:49 +0200
committerMarc Mutz <marc.mutz@kdab.com>2019-08-01 13:15:39 +0300
commitd89a4269ce1d9729842a508d97e1f1aeaf7305ee (patch)
tree0f13df650acb187ca8b1cc05c17b9577cb3e4cab /src/multimedia/audio
parent435557691c3c28e9c63aa4bb5f4b9ec8fe3f8923 (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.cpp18
-rw-r--r--src/multimedia/audio/qsamplecache_p.h2
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;