summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDaniel Schürmann <daschuer@mixxx.org>2021-09-22 09:18:32 +0200
committerDaniel Schürmann <daschuer@mixxx.org>2021-09-22 09:18:32 +0200
commit6e62600963fa0395b717cf4e7befe0cc66c45ca6 (patch)
tree4b22c4bad234f14d47fe146ab82809a70156c171 /src
parent9f77c2d9cc35d64f08bf5f5f309100fbe8b10daa (diff)
Indorduce a common cleanUpOldTrack() function
Diffstat (limited to 'src')
-rw-r--r--src/engine/cachingreader/cachingreaderworker.cpp19
-rw-r--r--src/engine/cachingreader/cachingreaderworker.h4
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();