From d0b0c1c8bbb8ce9fbf93887ed7dae5f779d17a21 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 14 Aug 2013 22:11:56 +0300 Subject: add flag into resource and imageset what prevent subimage or other resource from auto removing. --- src/resources/imageset.cpp | 4 +++- src/resources/resource.cpp | 2 +- src/resources/resource.h | 9 +++++++-- 3 files changed, 11 insertions(+), 4 deletions(-) (limited to 'src/resources') diff --git a/src/resources/imageset.cpp b/src/resources/imageset.cpp index 164e682a4..5f62af574 100644 --- a/src/resources/imageset.cpp +++ b/src/resources/imageset.cpp @@ -49,7 +49,9 @@ ImageSet::ImageSet(Image *const img, const int width, const int height, for (int x = margin; x + width <= img->getWidth() - margin; x += wAdd) { - mImages.push_back(img->getSubImage(x, y, width, height)); + Image *const image = img->getSubImage(x, y, width, height); + image->setNotCount(true); + mImages.push_back(image); } } } diff --git a/src/resources/resource.cpp b/src/resources/resource.cpp index b111a4081..b67fe644b 100644 --- a/src/resources/resource.cpp +++ b/src/resources/resource.cpp @@ -49,7 +49,7 @@ void Resource::decRef() mRefCount--; - if (mRefCount == 0) + if (mRefCount == 0 && !mNotCount) { // Warn the manager that this resource is no longer used. ResourceManager *const resman = ResourceManager::getInstance(); diff --git a/src/resources/resource.h b/src/resources/resource.h index 0aa2e34b0..a60d6765c 100644 --- a/src/resources/resource.h +++ b/src/resources/resource.h @@ -46,11 +46,12 @@ class Resource mSource(), mTimeStamp(0), mRefCount(0), -#ifdef DEBUG_DUMP_LEAKS mProtected(false), +#ifdef DEBUG_DUMP_LEAKS + mNotCount(false), mDumped(false) #else - mProtected(false) + mNotCount(false) #endif { } @@ -95,6 +96,9 @@ class Resource bool isProtected() const { return mProtected; } + void setNotCount(bool b) + { mNotCount = b; } + #ifdef DEBUG_DUMP_LEAKS bool getDumped() const A_WARN_UNUSED { return mDumped; } @@ -116,6 +120,7 @@ class Resource time_t mTimeStamp; /**< Time at which the resource was orphaned. */ unsigned int mRefCount; /**< Reference count. */ bool mProtected; + bool mNotCount; #ifdef DEBUG_DUMP_LEAKS bool mDumped; #endif -- cgit v1.2.3-60-g2f50