From 0b39a434e2191b8b184ad94e052f89b8a89e9a3c Mon Sep 17 00:00:00 2001 From: chai Date: Sat, 8 Dec 2018 22:14:38 +0800 Subject: *shared retain release --- src/lua/common/je_lua_shared.hpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src/lua/common/je_lua_shared.hpp') diff --git a/src/lua/common/je_lua_shared.hpp b/src/lua/common/je_lua_shared.hpp index 16dd943..d9d9a0e 100644 --- a/src/lua/common/je_lua_shared.hpp +++ b/src/lua/common/je_lua_shared.hpp @@ -56,6 +56,7 @@ namespace JinEngine private: friend class LuaObject; + // Disable copy. Shared(const Shared& shared); /// @@ -63,8 +64,7 @@ namespace JinEngine /// ~Shared() { - Object* obj = static_cast(mObject); - delete obj; + delete mObject; } /// @@ -73,8 +73,16 @@ namespace JinEngine /// Shared时就增加一个引用计数,理论上在同一个线程中,一个EngineObject只能由一个LuaObject绑定,发生在new /// instance过程中,那么mCount就表明EngineObject的共享线程数。 /// - void retain(); - void release(); + inline void Shared::retain() + { + ++mCount; + } + + inline void Shared::release() + { + if (--mCount <= 0) + delete this; + } Object* mObject; int mCount; -- cgit v1.1-26-g67d0