aboutsummaryrefslogtreecommitdiff
path: root/src/lua/common/je_lua_shared.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lua/common/je_lua_shared.hpp')
-rw-r--r--src/lua/common/je_lua_shared.hpp16
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ֻһ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;