diff options
| author | Jordan Woyak <jordan.woyak@gmail.com> | 2026-02-07 23:01:05 -0600 |
|---|---|---|
| committer | Jordan Woyak <jordan.woyak@gmail.com> | 2026-02-15 20:14:15 -0600 |
| commit | 3681cade416a025ca24c35b4d176537c53b48a4f (patch) | |
| tree | b2c8698cf21842ae199ac9b5ad7e8dc7f00e2e8f /Source/Core/DiscIO | |
| parent | aaa709444245ada15b5679e60a02fdfde2e4510c (diff) | |
DiscIO: Add IsCached virtual function to BlobReader.
Diffstat (limited to 'Source/Core/DiscIO')
| -rw-r--r-- | Source/Core/DiscIO/Blob.h | 3 | ||||
| -rw-r--r-- | Source/Core/DiscIO/CachedBlob.cpp | 8 |
2 files changed, 11 insertions, 0 deletions
diff --git a/Source/Core/DiscIO/Blob.h b/Source/Core/DiscIO/Blob.h index 841a827b97..3551c31d44 100644 --- a/Source/Core/DiscIO/Blob.h +++ b/Source/Core/DiscIO/Blob.h @@ -97,6 +97,9 @@ public: return false; } + // Returns true only for CachedBlobReader. + virtual bool IsCached() const { return false; } + protected: BlobReader() {} }; diff --git a/Source/Core/DiscIO/CachedBlob.cpp b/Source/Core/DiscIO/CachedBlob.cpp index 98ed8ba31f..f1bbf055ee 100644 --- a/Source/Core/DiscIO/CachedBlob.cpp +++ b/Source/Core/DiscIO/CachedBlob.cpp @@ -219,6 +219,8 @@ public: return m_cache_filler->Read(offset, size, out_ptr) || m_reader->Read(offset, size, out_ptr); } + bool IsCached() const override { return true; } + private: // A shared object does the cache filling for sensible CopyReader behavior. const std::shared_ptr<CacheFiller> m_cache_filler; @@ -228,11 +230,17 @@ private: std::unique_ptr<BlobReader> CreateCachedBlobReader(std::unique_ptr<BlobReader> reader) { + if (reader->IsCached()) // This is already CachedBlobReader. + return reader; + return std::make_unique<CachedBlobReader>(std::move(reader), false); } std::unique_ptr<BlobReader> CreateScrubbingCachedBlobReader(std::unique_ptr<BlobReader> reader) { + if (reader->IsCached()) // This reader is already a CachedBlobReader. + return reader; + return std::make_unique<CachedBlobReader>(std::move(reader), true); } |
