summaryrefslogtreecommitdiff
path: root/Runtime/Lua/LuaBind
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-10-25 23:29:21 +0800
committerchai <chaifix@163.com>2021-10-25 23:29:21 +0800
commit7ecf913256fb396e3027aac3318d996a716a52ef (patch)
tree4540835c881a63b665e2a692bf30115fd29e8bb0 /Runtime/Lua/LuaBind
parent0816cd70ca1a213b6ed872bcf3c0bf0912473722 (diff)
+ job system
Diffstat (limited to 'Runtime/Lua/LuaBind')
-rw-r--r--Runtime/Lua/LuaBind/LuaBindClass.hpp4
-rw-r--r--Runtime/Lua/LuaBind/LuaBindState.cpp11
-rw-r--r--Runtime/Lua/LuaBind/LuaBindState.h1
3 files changed, 13 insertions, 3 deletions
diff --git a/Runtime/Lua/LuaBind/LuaBindClass.hpp b/Runtime/Lua/LuaBind/LuaBindClass.hpp
index eb028c2..7fb4529 100644
--- a/Runtime/Lua/LuaBind/LuaBindClass.hpp
+++ b/Runtime/Lua/LuaBind/LuaBindClass.hpp
@@ -414,7 +414,7 @@ namespace LuaBind
PushMemberRef(state, script);
state.GetField(-1, method);
PushMemberRef(state, script);
- state.Call(1, 0);
+ state.Call(1, 0, onErrorOccured);
state.SetTop(top);
}
@@ -512,7 +512,7 @@ namespace LuaBind
if (state.IsType(-1, LUA_TFUNCTION))
{
lua_pushvalue(L, 1); // userdata
- state.Call(1, 1); // 派生类的GetClassName函数
+ state.Call(1, 1, onErrorOccured); // 派生类的GetClassName函数
classname = state.GetValue<cc8*>(-1, "");
}
else
diff --git a/Runtime/Lua/LuaBind/LuaBindState.cpp b/Runtime/Lua/LuaBind/LuaBindState.cpp
index 7c5f043..137acbf 100644
--- a/Runtime/Lua/LuaBind/LuaBindState.cpp
+++ b/Runtime/Lua/LuaBind/LuaBindState.cpp
@@ -8,7 +8,8 @@
namespace LuaBind
{
- OnRegisterClassHandler onRegisterNativeClass;
+ OnRegisterClassHandler onRegisterNativeClass = NULL;
+ ErrorHandler onErrorOccured = NULL;
std::string g_NameSpace = "";
@@ -114,6 +115,10 @@ namespace LuaBind
{
//luaL_dofile(mState, path.c_str());
LoadFile(path);
+ if (handler == NULL)
+ {
+ handler = onErrorOccured;
+ }
Call(0, 0, handler);
}
@@ -161,6 +166,10 @@ namespace LuaBind
void State::Call(int nArgs, int nResults, ErrorHandler handler)
{
+ if (handler == NULL)
+ {
+ handler = onErrorOccured;
+ }
int oldTop = GetTop() - nArgs - 1;
int func = 0;
if (handler != NULL)
diff --git a/Runtime/Lua/LuaBind/LuaBindState.h b/Runtime/Lua/LuaBind/LuaBindState.h
index e7e2807..071287f 100644
--- a/Runtime/Lua/LuaBind/LuaBindState.h
+++ b/Runtime/Lua/LuaBind/LuaBindState.h
@@ -17,6 +17,7 @@ namespace LuaBind
typedef void (*ErrorHandler) (cc8 * msg);
typedef void(*OnRegisterClassHandler)(State&, int clsIdx, std::string clsName, std::string pkgName);
+ extern ErrorHandler onErrorOccured;
extern OnRegisterClassHandler onRegisterNativeClass;
extern std::string g_NameSpace;