summaryrefslogtreecommitdiffstats
path: root/src/engine/cachingreaderworker.h
diff options
context:
space:
mode:
authorDaniel Schürmann <daschuer@mixxx.org>2019-09-16 01:10:23 +0200
committerGitHub <noreply@github.com>2019-09-16 01:10:23 +0200
commit4000c668ed75fa9a8142c06f2aac5fd48392a9df (patch)
tree9c25f6af7827302d9b3397891b9ff5162e7fa054 /src/engine/cachingreaderworker.h
parente9514640285b27fe31e073b34d1d052dd7a3792e (diff)
parent69d2414cb9a3bbbacd2556c4a7e941600f621343 (diff)
Merge pull request #2265 from uklotzde/cachingreader_chunks
lp1842679: Fix caching of audio data
Diffstat (limited to 'src/engine/cachingreaderworker.h')
-rw-r--r--src/engine/cachingreaderworker.h16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/engine/cachingreaderworker.h b/src/engine/cachingreaderworker.h
index 54c5a4c77e..eab3c4a8c9 100644
--- a/src/engine/cachingreaderworker.h
+++ b/src/engine/cachingreaderworker.h
@@ -36,11 +36,14 @@ enum ReaderStatus {
// POD with trivial ctor/dtor/copy for passing through FIFO
typedef struct ReaderStatusUpdate {
- ReaderStatus status;
+ private:
CachingReaderChunk* chunk;
SINT readableFrameIndexRangeStart;
SINT readableFrameIndexRangeEnd;
+ public:
+ ReaderStatus status;
+
void init(
ReaderStatus statusArg = INVALID,
CachingReaderChunk* chunkArg = nullptr,
@@ -51,6 +54,17 @@ typedef struct ReaderStatusUpdate {
readableFrameIndexRangeEnd = readableFrameIndexRangeArg.end();
}
+ CachingReaderChunkForOwner* takeFromWorker() {
+ CachingReaderChunkForOwner* pChunk = nullptr;
+ if (chunk) {
+ DEBUG_ASSERT(dynamic_cast<CachingReaderChunkForOwner*>(chunk));
+ pChunk = static_cast<CachingReaderChunkForOwner*>(chunk);
+ chunk = nullptr;
+ pChunk->takeFromWorker();
+ }
+ return pChunk;
+ }
+
mixxx::IndexRange readableFrameIndexRange() const {
return mixxx::IndexRange::between(
readableFrameIndexRangeStart,