summaryrefslogtreecommitdiffstats
path: root/src/multimedia
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-07-09 03:08:11 +0200
committerEdward Welbourne <edward.welbourne@qt.io>2019-07-11 13:53:20 +0200
commitd035d4de3770427396bd4e6a7db9b6c7161e2abf (patch)
treea98cfa4d820050152a647cfcf320ccba7588fe0f /src/multimedia
parent0198f94e6612b26483dfa341b43eb9998afe1b6d (diff)
parent27497df23e68488472f922ead948b034225f9f3b (diff)
Merge "Merge remote-tracking branch 'origin/5.12' into 5.13"
Diffstat (limited to 'src/multimedia')
-rw-r--r--src/multimedia/audio/qsamplecache_p.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/multimedia/audio/qsamplecache_p.cpp b/src/multimedia/audio/qsamplecache_p.cpp
index 945fabe52..35234f8bb 100644
--- a/src/multimedia/audio/qsamplecache_p.cpp
+++ b/src/multimedia/audio/qsamplecache_p.cpp
@@ -295,9 +295,12 @@ void QSample::loadIfNecessary()
}
}
-// Called in both threads
+// Called in application thread
bool QSampleCache::notifyUnreferencedSample(QSample* sample)
{
+ if (m_loadingThread.isRunning())
+ m_loadingThread.wait();
+
QMutexLocker locker(&m_mutex);
if (m_capacity > 0)
return false;
@@ -306,16 +309,17 @@ bool QSampleCache::notifyUnreferencedSample(QSample* sample)
return true;
}
-// Called in application threadd
+// Called in application thread
void QSample::release()
{
QMutexLocker locker(&m_mutex);
#ifdef QT_SAMPLECACHE_DEBUG
qDebug() << "Sample:: release" << this << QThread::currentThread() << m_ref;
#endif
- m_ref--;
- if (m_ref == 0)
+ if (--m_ref == 0) {
+ locker.unlock();
m_parent->notifyUnreferencedSample(this);
+ }
}
// Called in dtor and when stream is loaded