diff options
Diffstat (limited to 'src/engine/cachingreader/cachingreaderworker.h')
-rw-r--r-- | src/engine/cachingreader/cachingreaderworker.h | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/src/engine/cachingreader/cachingreaderworker.h b/src/engine/cachingreader/cachingreaderworker.h index a7a9b2c584..6661677a34 100644 --- a/src/engine/cachingreader/cachingreaderworker.h +++ b/src/engine/cachingreader/cachingreaderworker.h @@ -26,12 +26,12 @@ typedef struct CachingReaderChunkReadRequest { } CachingReaderChunkReadRequest; enum ReaderStatus { - INVALID, - TRACK_NOT_LOADED, TRACK_LOADED, + TRACK_UNLOADED, CHUNK_READ_SUCCESS, CHUNK_READ_EOF, - CHUNK_READ_INVALID + CHUNK_READ_INVALID, + CHUNK_READ_DISCARDED, // response without frame index range! }; // POD with trivial ctor/dtor/copy for passing through FIFO @@ -45,15 +45,36 @@ typedef struct ReaderStatusUpdate { ReaderStatus status; void init( - ReaderStatus statusArg = INVALID, - CachingReaderChunk* chunkArg = nullptr, - const mixxx::IndexRange& readableFrameIndexRangeArg = mixxx::IndexRange()) { + ReaderStatus statusArg, + CachingReaderChunk* chunkArg, + const mixxx::IndexRange& readableFrameIndexRangeArg) { status = statusArg; chunk = chunkArg; readableFrameIndexRangeStart = readableFrameIndexRangeArg.start(); readableFrameIndexRangeEnd = readableFrameIndexRangeArg.end(); } + static ReaderStatusUpdate readDiscarded( + CachingReaderChunk* chunk) { + ReaderStatusUpdate update; + update.init(CHUNK_READ_DISCARDED, chunk, mixxx::IndexRange()); + return update; + } + + static ReaderStatusUpdate trackLoaded( + const mixxx::IndexRange& readableFrameIndexRange) { + DEBUG_ASSERT(!readableFrameIndexRange.empty()); + ReaderStatusUpdate update; + update.init(TRACK_LOADED, nullptr, readableFrameIndexRange); + return update; + } + + static ReaderStatusUpdate trackNotLoaded() { + ReaderStatusUpdate update; + update.init(TRACK_UNLOADED, nullptr, mixxx::IndexRange()); + return update; + } + CachingReaderChunkForOwner* takeFromWorker() { CachingReaderChunkForOwner* pChunk = nullptr; if (chunk) { |