diff options
author | VaL Doroshchuk <valentyn.doroshchuk@qt.io> | 2019-07-23 10:33:51 +0200 |
---|---|---|
committer | VaL Doroshchuk <valentyn.doroshchuk@qt.io> | 2019-07-23 10:33:51 +0200 |
commit | 14d6166b2790b37906fd76248d955659ff78622f (patch) | |
tree | f02ec37165b5ae47beb238aa23031e6e2106502f /src/multimedia/audio/qsamplecache_p.cpp | |
parent | e99a2e1701179d0d28ef1d1eac696d480894f4bb (diff) | |
parent | 2eb0a98f1de07782004a5a4261cb5d2c46ca6d15 (diff) |
Merge branch 'dev' of git://code.qt.io/qt/qtmultimedia into wip/qt6
Change-Id: I91e8d902cd916ee16a2495da9bf40a34c6bc05d2
Diffstat (limited to 'src/multimedia/audio/qsamplecache_p.cpp')
-rw-r--r-- | src/multimedia/audio/qsamplecache_p.cpp | 12 |
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 |