diff options
Diffstat (limited to 'src/engine/cachingreaderworker.h')
-rw-r--r-- | src/engine/cachingreaderworker.h | 16 |
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, |