diff options
Diffstat (limited to 'src/lua/common/je_lua_shared.hpp')
-rw-r--r-- | src/lua/common/je_lua_shared.hpp | 16 |
1 files changed, 12 insertions, 4 deletions
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<Object*>(mObject); - delete obj; + delete mObject; } /// @@ -73,8 +73,16 @@ namespace JinEngine /// Sharedʱһüͬһ߳УһEngineObjectֻһLuaObjectnew /// 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; |