Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/base
diff options
context:
space:
mode:
Diffstat (limited to 'source/base')
-rw-r--r--source/base/StarMemoryAssetSource.cpp6
-rw-r--r--source/base/StarPackedAssetSource.cpp6
2 files changed, 12 insertions, 0 deletions
diff --git a/source/base/StarMemoryAssetSource.cpp b/source/base/StarMemoryAssetSource.cpp
index a7554b6..5dec123 100644
--- a/source/base/StarMemoryAssetSource.cpp
+++ b/source/base/StarMemoryAssetSource.cpp
@@ -57,6 +57,12 @@ IODevicePtr MemoryAssetSource::open(String const& path) {
assetPos = clamp<StreamOffset>(assetPos - p, 0, assetSize);
}
+ IODevicePtr clone() override {
+ auto cloned = make_shared<AssetReader>(assetData, assetSize, name);
+ cloned->assetPos = assetPos;
+ return cloned;
+ }
+
char* assetData;
size_t assetSize;
StreamOffset assetPos = 0;
diff --git a/source/base/StarPackedAssetSource.cpp b/source/base/StarPackedAssetSource.cpp
index 59e64cc..8979978 100644
--- a/source/base/StarPackedAssetSource.cpp
+++ b/source/base/StarPackedAssetSource.cpp
@@ -136,6 +136,12 @@ IODevicePtr PackedAssetSource::open(String const& path) {
assetPos = clamp<StreamOffset>(assetSize - p, 0, assetSize);
}
+ IODevicePtr clone() override {
+ auto cloned = make_shared<AssetReader>(file, path, fileOffset, assetSize);
+ cloned->assetPos = assetPos;
+ return cloned;
+ }
+
FilePtr file;
String path;
StreamOffset fileOffset;