diff options
-rw-r--r-- | src/resources/resourcemanager.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/resources/resourcemanager.cpp b/src/resources/resourcemanager.cpp index 5045d21b..e62407e3 100644 --- a/src/resources/resourcemanager.cpp +++ b/src/resources/resourcemanager.cpp @@ -50,11 +50,12 @@ ResourceManager::ResourceManager() ResourceManager::~ResourceManager() { - // Put the orphaned resources into the main list for cleanup - mResources.insert(mOrphanedResources.begin(), mOrphanedResources.end()); - auto cleanupResources = [&](auto match) { + // Include any orphaned resources into the main list for cleanup + mResources.insert(mOrphanedResources.begin(), mOrphanedResources.end()); + mOrphanedResources.clear(); + for (auto iter = mResources.begin(); iter != mResources.end(); ) { if (match(iter->second)) @@ -76,8 +77,9 @@ ResourceManager::~ResourceManager() cleanupResources([](Resource *res) { return dynamic_cast<ImageSet *>(res); }); // Release remaining resources - for (const auto &resource : mResources) - cleanUp(resource.second); + cleanupResources([](Resource *res) { return true; }); + + assert(mOrphanedResources.empty()); } void ResourceManager::cleanUp(Resource *res) @@ -98,7 +100,7 @@ void ResourceManager::cleanOrphans() { // Delete orphaned resources after 30 seconds. time_t oldest = time(nullptr); - time_t threshold = oldest - 30; + const time_t threshold = oldest - 30; if (mOrphanedResources.empty() || mOldestOrphan >= threshold) return; |