Browse Source

Force lua GC.

Aster Jian 12 years ago
parent
commit
52516fbfa2
2 changed files with 20 additions and 28 deletions
  1. 15 19
      Extras/LuaScript/LuaScript.cpp
  2. 5 9
      Extras/LuaScript/LuaScript.h

+ 15 - 19
Extras/LuaScript/LuaScript.cpp

@@ -126,19 +126,19 @@ bool LuaScript::ExecuteFile(const char* fileName)
 
 
     if (error)
     if (error)
     {
     {
-        String message = lua_tostring(luaState_, -1);
+        const char* message = lua_tostring(luaState_, -1);
         lua_settop(luaState_, top);
         lua_settop(luaState_, top);
         LOGRAW(String("Lua: Unable to execute Lua file '") + fileName + "'. ");
         LOGRAW(String("Lua: Unable to execute Lua file '") + fileName + "'. ");
-        LOGRAW("Lua: " + message);
+        LOGRAW(String("Lua: ") + message);
         return false;
         return false;
     }
     }
 
 
     if (lua_pcall(luaState_, 0, 0, 0))
     if (lua_pcall(luaState_, 0, 0, 0))
     {
     {
-        String message = lua_tostring(luaState_, -1);
+        const char* message = lua_tostring(luaState_, -1);
         lua_settop(luaState_, top);
         lua_settop(luaState_, top);
         LOGRAW(String("Lua: Unable to execute Lua script file '") + fileName + "'.");
         LOGRAW(String("Lua: Unable to execute Lua script file '") + fileName + "'.");
-        LOGRAW("Lua: " + message);
+        LOGRAW(String("Lua: ") + message);
         return false;
         return false;
     }
     }
 
 
@@ -157,10 +157,10 @@ bool LuaScript::ExecuteString(const char* string)
     int top = lua_gettop(luaState_);
     int top = lua_gettop(luaState_);
     if (luaL_dostring(luaState_, string) != 0)
     if (luaL_dostring(luaState_, string) != 0)
     {
     {
-        String message = lua_tostring(luaState_, -1);
+        const char* message = lua_tostring(luaState_, -1);
         lua_settop(luaState_, top);
         lua_settop(luaState_, top);
         LOGRAW(String("Lua: Unable to execute Lua string '") + string + "'.");
         LOGRAW(String("Lua: Unable to execute Lua string '") + string + "'.");
-        LOGRAW("Lua: " + message);
+        LOGRAW(String("Lua: ") + message);
         return false;
         return false;
     }
     }
 
 
@@ -187,26 +187,16 @@ bool LuaScript::ExecuteFunction(const char* funcName)
 
 
     if (lua_pcall(luaState_, 0, 0, 0))
     if (lua_pcall(luaState_, 0, 0, 0))
     {
     {
-        String message = lua_tostring(luaState_, -1);
+        const char* message = lua_tostring(luaState_, -1);
         lua_settop(luaState_, top);
         lua_settop(luaState_, top);
         LOGRAW(String("Lua: Unable to execute function '") + funcName + "'.");
         LOGRAW(String("Lua: Unable to execute function '") + funcName + "'.");
-        LOGRAW("Lua: " + message);
+        LOGRAW(String("Lua: ") + message);
         return false;
         return false;
     }
     }
 
 
     return true;
     return true;
 }
 }
 
 
-void LuaScript::SetDefaultScene( Scene* scene )
-{
-    defaultScene_ = scene;
-}
-
-Scene* LuaScript::GetDefaultScene() const
-{
-    return defaultScene_;
-}
-
 void LuaScript::SubscribeLuaEvent(const char* event, const char* funcName)
 void LuaScript::SubscribeLuaEvent(const char* event, const char* funcName)
 {
 {
     StringHash eventType(event);
     StringHash eventType(event);
@@ -299,11 +289,17 @@ void LuaScript::HandleConsoleCommand(StringHash eventType, VariantMap& eventData
     ExecuteString(eventData[P_COMMAND].GetString().CString());
     ExecuteString(eventData[P_COMMAND].GetString().CString());
 }
 }
 
 
-Context* GetLuaScriptContext()
+Context* GetContext()
 {
 {
     return scriptContext_;
     return scriptContext_;
 }
 }
 
 
+void SendEvent(const char* eventType, VariantMap& eventData)
+{
+    LuaScript* luaScript = scriptContext_->GetSubsystem<LuaScript>();
+    luaScript->SendEvent(StringHash(eventType), eventData);
+}
+
 void SubscribeToEvent(const char* eventType, const char* funcName)
 void SubscribeToEvent(const char* eventType, const char* funcName)
 {
 {
     LuaScript* luaScript = scriptContext_->GetSubsystem<LuaScript>();
     LuaScript* luaScript = scriptContext_->GetSubsystem<LuaScript>();

+ 5 - 9
Extras/LuaScript/LuaScript.h

@@ -55,12 +55,6 @@ public:
     /// Return the lua state.
     /// Return the lua state.
     lua_State* GetLuaState() const { return luaState_; }
     lua_State* GetLuaState() const { return luaState_; }
 
 
-    /// Scene default scene.
-    void SetDefaultScene(Scene* scene);
-
-    /// Return default scene.
-    Scene* GetDefaultScene() const;
-
     /// Subscribe lua event.
     /// Subscribe lua event.
     void SubscribeLuaEvent(const char* event, const char* function);
     void SubscribeLuaEvent(const char* event, const char* function);
 
 
@@ -83,13 +77,15 @@ private:
 private:
 private:
     /// Lua state.
     /// Lua state.
     lua_State* luaState_;
     lua_State* luaState_;
-    /// Default scene.
-    WeakPtr<Scene> defaultScene_;
     /// Event type to Lua function name map.
     /// Event type to Lua function name map.
     HashMap<StringHash, Vector<String> > eventFunctionMap_;
     HashMap<StringHash, Vector<String> > eventFunctionMap_;
 };
 };
 
 
-Context* GetLuaScriptContext();
+/// Return context.
+Context* GetContext();
+///  Send event function for Lua script.
+void SendEvent(const char* eventType, VariantMap& eventData);
+/// Subscribe event function for Lua script.
 void SubscribeToEvent(const char* eventType, const char* funcName);
 void SubscribeToEvent(const char* eventType, const char* funcName);
 
 
 }
 }