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 11:45:13 +0200
commit27497df23e68488472f922ead948b034225f9f3b (patch)
tree1d47484f345a0cc0a6147506459c55023eacf504 /src/multimedia
parentbe84c8103b830c4c4bbda7ccfc72aea5b10e779b (diff)
parent1b70bbed49d12af86851a505a5aa5428b9e0c567 (diff)
Merge remote-tracking branch 'origin/5.12' into 5.13
Conflicts: .qmake.conf Change-Id: Ic700bdddc5b4ae663af0daae54feb2420c8a1730
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