summaryrefslogtreecommitdiffstats
path: root/src/multimedia/audio/qsamplecache_p.cpp
diff options
context:
space:
mode:
authorVaL Doroshchuk <valentyn.doroshchuk@qt.io>2019-07-23 10:33:51 +0200
committerVaL Doroshchuk <valentyn.doroshchuk@qt.io>2019-07-23 10:33:51 +0200
commit14d6166b2790b37906fd76248d955659ff78622f (patch)
treef02ec37165b5ae47beb238aa23031e6e2106502f /src/multimedia/audio/qsamplecache_p.cpp
parente99a2e1701179d0d28ef1d1eac696d480894f4bb (diff)
parent2eb0a98f1de07782004a5a4261cb5d2c46ca6d15 (diff)
Merge branch 'dev' of git://code.qt.io/qt/qtmultimedia into wip/qt6
Diffstat (limited to 'src/multimedia/audio/qsamplecache_p.cpp')
-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