summaryrefslogtreecommitdiffstats
path: root/src/track/globaltrackcache.cpp
diff options
context:
space:
mode:
authorUwe Klotz <uklotz@mixxx.org>2019-09-22 19:55:54 +0200
committerUwe Klotz <uklotz@mixxx.org>2019-09-22 19:56:30 +0200
commit3ebfee823040b2c153fb048b773a6a6bbb392904 (patch)
treee031484fb02e0635557c504861bf129dd1303513 /src/track/globaltrackcache.cpp
parent0554943a078c67ff78c540db4b886b1b468997d3 (diff)
Verify that the evict-and-save functor is only executed once
Diffstat (limited to 'src/track/globaltrackcache.cpp')
-rw-r--r--src/track/globaltrackcache.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/track/globaltrackcache.cpp b/src/track/globaltrackcache.cpp
index 5d1dfdbf26..b39326c3f8 100644
--- a/src/track/globaltrackcache.cpp
+++ b/src/track/globaltrackcache.cpp
@@ -36,17 +36,22 @@ TrackRef createTrackRef(const Track& track) {
class EvictAndSaveFunctor {
public:
- explicit EvictAndSaveFunctor(GlobalTrackCacheEntryPointer cacheEntryPtr)
+ explicit EvictAndSaveFunctor(
+ GlobalTrackCacheEntryPointer cacheEntryPtr)
: m_cacheEntryPtr(std::move(cacheEntryPtr)) {
}
void operator()(Track* plainPtr) {
+ Q_UNUSED(plainPtr); // only used in DEBUG_ASSERT
+ DEBUG_ASSERT(m_cacheEntryPtr);
DEBUG_ASSERT(plainPtr == m_cacheEntryPtr->getPlainPtr());
// Here we move m_cacheEntryPtr and the owned track out of the
// functor and the owning reference counting object.
// This is required to break a cycle reference from the weak pointer
// inside the cache entry to the same reference counting object.
GlobalTrackCache::evictAndSaveCachedTrack(std::move(m_cacheEntryPtr));
+ // Verify that this functor is only invoked once
+ DEBUG_ASSERT(!m_cacheEntryPtr);
}
const GlobalTrackCacheEntryPointer& getCacheEntryPointer() const {