From deabbd64ca7c94a6efd58164916b7947d83f1f92 Mon Sep 17 00:00:00 2001 From: Turanszki Janos Date: Sun, 15 Dec 2019 11:01:02 +0000 Subject: [PATCH] resource manager fix --- WickedEngine/wiResourceManager.cpp | 20 +++++++++++--------- WickedEngine/wiVersion.cpp | 2 +- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/WickedEngine/wiResourceManager.cpp b/WickedEngine/wiResourceManager.cpp index 314d8c4fc..378d90684 100644 --- a/WickedEngine/wiResourceManager.cpp +++ b/WickedEngine/wiResourceManager.cpp @@ -42,13 +42,19 @@ namespace wiResourceManager std::shared_ptr Load(const wiHashString& name) { locker.lock(); - auto it = resources.find(name); - bool found = it != resources.end() && !it->second.expired(); - locker.unlock(); + std::weak_ptr& weak_resource = resources[name]; + std::shared_ptr resource = weak_resource.lock(); - if (found) + if (resource == nullptr) { - return it->second.lock(); + resource = std::make_shared(); + resources[name] = resource; + locker.unlock(); + } + else + { + locker.unlock(); + return resource; } @@ -285,12 +291,8 @@ namespace wiResourceManager if (success != nullptr) { - locker.lock(); - std::shared_ptr resource = std::make_shared(); resource->data = success; resource->type = type; - resources.insert(make_pair(name, resource)); - locker.unlock(); return resource; } diff --git a/WickedEngine/wiVersion.cpp b/WickedEngine/wiVersion.cpp index c00c4296a..89b37b756 100644 --- a/WickedEngine/wiVersion.cpp +++ b/WickedEngine/wiVersion.cpp @@ -9,7 +9,7 @@ namespace wiVersion // minor features, major updates const int minor = 36; // minor bug fixes, alterations, refactors, updates - const int revision = 7; + const int revision = 8; long GetVersion()