Clear image cache when tabbing out of canvas

This commit is contained in:
Yousef Khadadeh 2026-02-19 22:29:24 +03:00
parent c7024578af
commit 1f80107005
9 changed files with 32 additions and 0 deletions

View file

@ -287,6 +287,20 @@ ResourceDisplay::Type ImageResourceDisplay::get_type() const {
return ResourceDisplay::Type::IMAGE;
}
void ImageResourceDisplay::clear_cache() {
if(loadThread) {
shutdownLoadThread = true;
loadThread->join();
loadThread = nullptr;
}
for(auto& frame : frames) {
for(auto& mipmap : frame.mipmapLevels)
mipmap = nullptr;
}
for(auto& mipmapStatus : mipmapLevelsStatus)
mipmapStatus = MipmapLevelStatus::UNALLOCATED;
}
ImageResourceDisplay::~ImageResourceDisplay() {
if(loadThread) {
shutdownLoadThread = true;

View file

@ -16,6 +16,7 @@ class ImageResourceDisplay : public ResourceDisplay {
virtual float get_dimension_scale() const override;
virtual Type get_type() const override;
virtual void camera_view_update(const CoordSpaceHelper& compCoords, const SCollision::AABB<WorldScalar>& compAABB, const DrawData& drawData, const SkRect& imRect) override;
virtual void clear_cache() override;
virtual ~ImageResourceDisplay() override;
static int IMAGE_LOAD_THREAD_COUNT_MAX;

View file

@ -3,4 +3,7 @@
void ResourceDisplay::camera_view_update(const CoordSpaceHelper& compCoords, const SCollision::AABB<WorldScalar>& compAABB, const DrawData& drawData, const SkRect& imRect) {
}
void ResourceDisplay::clear_cache() {
}
ResourceDisplay::~ResourceDisplay() {}

View file

@ -27,5 +27,6 @@ class ResourceDisplay {
virtual float get_dimension_scale() const = 0;
virtual Type get_type() const = 0;
virtual void camera_view_update(const CoordSpaceHelper& compCoords, const SCollision::AABB<WorldScalar>& compAABB, const DrawData& drawData, const SkRect& imRect);
virtual void clear_cache();
virtual ~ResourceDisplay();
};