diff options
author | Daniel Schürmann <daschuer@mixxx.org> | 2019-09-16 01:10:23 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-16 01:10:23 +0200 |
commit | 4000c668ed75fa9a8142c06f2aac5fd48392a9df (patch) | |
tree | 9c25f6af7827302d9b3397891b9ff5162e7fa054 /src/engine/cachingreaderworker.h | |
parent | e9514640285b27fe31e073b34d1d052dd7a3792e (diff) | |
parent | 69d2414cb9a3bbbacd2556c4a7e941600f621343 (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.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, |