summaryrefslogtreecommitdiff
path: root/Runtime/Lua/LuaBind/LuaBindRef.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Runtime/Lua/LuaBind/LuaBindRef.cpp')
-rw-r--r--Runtime/Lua/LuaBind/LuaBindRef.cpp22
1 files changed, 21 insertions, 1 deletions
diff --git a/Runtime/Lua/LuaBind/LuaBindRef.cpp b/Runtime/Lua/LuaBind/LuaBindRef.cpp
index d0f2766..313824e 100644
--- a/Runtime/Lua/LuaBind/LuaBindRef.cpp
+++ b/Runtime/Lua/LuaBind/LuaBindRef.cpp
@@ -3,6 +3,12 @@
namespace LuaBind
{
+ UniversalRef::UniversalRef(RefMode mode)
+ : mRefID(LUA_NOREF)
+ , mMode(mode)
+ , mOwner(NULL) // ÑÓºóÉèÖÃ
+ {
+ }
UniversalRef::UniversalRef(LuaBind::VM* vm, RefMode mode)
: mRefID(LUA_NOREF)
@@ -43,7 +49,11 @@ namespace LuaBind
void UniversalRef::SetRef(LuaBind::State& state, int idx)
{
- assert(state.GetVM() == mOwner);
+ //assert(state.GetVM() == mOwner);
+ // ÑÓºóÉèÖÃvm
+ if (mOwner == NULL) {
+ mOwner = state.GetVM();
+ }
VM* vm = mOwner;
if (!vm) return;
@@ -83,11 +93,21 @@ namespace LuaBind
return true;
}
+ StrongRef::StrongRef()
+ : UniversalRef(STRONG_REF)
+ {
+ }
+
StrongRef::StrongRef(LuaBind::VM* vm)
: UniversalRef(vm, STRONG_REF)
{
}
+ WeakRef::WeakRef()
+ : UniversalRef(WEAK_REF)
+ {
+ }
+
WeakRef::WeakRef(LuaBind::VM* vm)
: UniversalRef(vm, WEAK_REF)
{