diff options
author | Daniel Schürmann <daschuer@mixxx.org> | 2021-09-22 09:18:32 +0200 |
---|---|---|
committer | Daniel Schürmann <daschuer@mixxx.org> | 2021-09-22 09:18:32 +0200 |
commit | 6e62600963fa0395b717cf4e7befe0cc66c45ca6 (patch) | |
tree | 4b22c4bad234f14d47fe146ab82809a70156c171 /src | |
parent | 9f77c2d9cc35d64f08bf5f5f309100fbe8b10daa (diff) |
Indorduce a common cleanUpOldTrack() function
Diffstat (limited to 'src')
-rw-r--r-- | src/engine/cachingreader/cachingreaderworker.cpp | 19 | ||||
-rw-r--r-- | src/engine/cachingreader/cachingreaderworker.h | 4 |
2 files changed, 11 insertions, 12 deletions
diff --git a/src/engine/cachingreader/cachingreaderworker.cpp b/src/engine/cachingreader/cachingreaderworker.cpp index e6e488d683..de01b3826c 100644 --- a/src/engine/cachingreader/cachingreaderworker.cpp +++ b/src/engine/cachingreader/cachingreaderworker.cpp @@ -118,8 +118,8 @@ void CachingReaderWorker::run() { } } -void CachingReaderWorker::ejectTrack() { - // This is called with the engine stopped. +void CachingReaderWorker::cleanUpOldTrack() { + m_pAudioSource.reset(); // Close open file handles of the old track. // Discard all pending read requests CachingReaderChunkReadRequest request; @@ -127,9 +127,11 @@ void CachingReaderWorker::ejectTrack() { const auto update = ReaderStatusUpdate::readDiscarded(request.chunk); m_pReaderStatusFIFO->writeBlocking(&update, 1); } +} - // Unload the track - m_pAudioSource.reset(); // Close open file handles +void CachingReaderWorker::ejectTrack() { + // This is called with the engine stopped. + cleanUpOldTrack(); const auto update = ReaderStatusUpdate::trackUnloaded(); m_pReaderStatusFIFO->writeBlocking(&update, 1); @@ -139,14 +141,7 @@ void CachingReaderWorker::loadTrack(const TrackPointer& pTrack) { // Emit that a new track is loading, stops the current track emit trackLoading(); - m_pAudioSource.reset(); // Close open file handles of the old track. - - // Discard all pending read requests - CachingReaderChunkReadRequest request; - while (m_pChunkReadRequestFIFO->read(&request, 1) == 1) { - const auto update = ReaderStatusUpdate::readDiscarded(request.chunk); - m_pReaderStatusFIFO->writeBlocking(&update, 1); - } + cleanUpOldTrack(); const QString trackLocation = pTrack->getLocation(); if (trackLocation.isEmpty() || !pTrack->checkFileExists()) { diff --git a/src/engine/cachingreader/cachingreaderworker.h b/src/engine/cachingreader/cachingreaderworker.h index 7eec56d5a6..ecc2e3d207 100644 --- a/src/engine/cachingreader/cachingreaderworker.h +++ b/src/engine/cachingreader/cachingreaderworker.h @@ -131,6 +131,10 @@ class CachingReaderWorker : public EngineWorker { QAtomicInt m_newTrackAvailable; TrackPointer m_pNewTrack; + /// call to be prepare for new tracks + /// Make sure engine has been stopped before + void cleanUpOldTrack(); + /// Internal method to unload a track. /// does not emit signals void ejectTrack(); |