Changing engine to shared library

This commit is contained in:
Dynamitos
2023-08-26 15:19:12 +02:00
parent 4ab924f251
commit dcbce27fb2
20 changed files with 93 additions and 47 deletions
+9 -8
View File
@@ -23,8 +23,9 @@
typedef WeakPtr<x> W##x; \
}
extern std::map<void *, void *> registeredObjects;
extern std::mutex registeredObjectsLock;
std::map<void*, void*>& getRegisteredObjects();
std::mutex& getRegisteredObjectLock();
namespace Seele
{
template <typename T, typename Deleter>
@@ -47,8 +48,8 @@ public:
~RefObject()
{
{
std::scoped_lock lock(registeredObjectsLock);
registeredObjects.erase(handle);
std::scoped_lock lock(getRegisteredObjectLock());
getRegisteredObjects().erase(handle);
}
// #pragma warning( disable: 4150)
deleter(handle);
@@ -112,14 +113,14 @@ public:
}
constexpr RefPtr(T *ptr, Deleter deleter = Deleter())
{
std::scoped_lock l(registeredObjectsLock);
auto registeredObj = registeredObjects.find(ptr);
std::scoped_lock l(getRegisteredObjectLock());
auto registeredObj = getRegisteredObjects().find(ptr);
// get here for thread safetly
auto registeredEnd = registeredObjects.end();
auto registeredEnd = getRegisteredObjects().end();
if (registeredObj == registeredEnd)
{
object = new RefObject<T, Deleter>(ptr, std::move(deleter));
registeredObjects[ptr] = object;
getRegisteredObjects()[ptr] = object;
}
else
{