diff options
author | ShadowNinja <shadowninja@minetest.net> | 2014-04-15 13:41:07 -0400 |
---|---|---|
committer | ShadowNinja <shadowninja@minetest.net> | 2014-04-27 16:15:53 -0400 |
commit | 6ab3b4c83856b5c8a1a526c0e4dc55babe79d50d (patch) | |
tree | 90e64f78dd3ceac12dbb21ac6b045500de0ca603 /src/script/lua_api/l_mainmenu.cpp | |
parent | db4ea4658c58772ee447ff0eff8bb39b692081ec (diff) | |
download | minetest-6ab3b4c83856b5c8a1a526c0e4dc55babe79d50d.tar.gz minetest-6ab3b4c83856b5c8a1a526c0e4dc55babe79d50d.tar.bz2 minetest-6ab3b4c83856b5c8a1a526c0e4dc55babe79d50d.zip |
Remove dependency on marshal and many other async changes
This makes a number of changes:
* Remove the dependency on marshal by using string.dump and loadstring.
* Use lua_tolstring rather than having Lua functions pass string lengths to C++.
* Move lua_api/l_async_events.* to cpp_api/s_async.*, where it belongs.
* Make AsyncWorkerThread a child of ScriptApiBase, this removes some duplicate functionality.
* Don't wait for async threads to shut down. (Is this safe? Might result in corruption if the thread is writing to a file.)
* Pop more unused items from the stack
* Code style fixes
* Other misc changes
Diffstat (limited to 'src/script/lua_api/l_mainmenu.cpp')
-rw-r--r-- | src/script/lua_api/l_mainmenu.cpp | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/script/lua_api/l_mainmenu.cpp b/src/script/lua_api/l_mainmenu.cpp index 5de1c77f0..31fc45ce2 100644 --- a/src/script/lua_api/l_mainmenu.cpp +++ b/src/script/lua_api/l_mainmenu.cpp @@ -20,7 +20,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "lua_api/l_mainmenu.h" #include "lua_api/l_internal.h" #include "common/c_content.h" -#include "lua_api/l_async_events.h" +#include "cpp_api/s_async.h" #include "guiEngine.h" #include "guiMainMenu.h" #include "guiKeyChangeMenu.h" @@ -1034,19 +1034,18 @@ int ModApiMainMenu::l_do_async_callback(lua_State *L) { GUIEngine* engine = getGuiEngine(L); - const char* serialized_fct_raw = luaL_checkstring(L, 1); - unsigned int lenght_fct = luaL_checkint(L, 2); + size_t func_length, param_length; + const char* serialized_func_raw = luaL_checklstring(L, 1, &func_length); - const char* serialized_params_raw = luaL_checkstring(L, 3); - unsigned int lenght_params = luaL_checkint(L, 4); + const char* serialized_param_raw = luaL_checklstring(L, 2, ¶m_length); - assert(serialized_fct_raw != 0); - assert(serialized_params_raw != 0); + assert(serialized_func_raw != NULL); + assert(serialized_param_raw != NULL); - std::string serialized_fct = std::string(serialized_fct_raw,lenght_fct); - std::string serialized_params = std::string(serialized_params_raw,lenght_params); + std::string serialized_func = std::string(serialized_func_raw, func_length); + std::string serialized_param = std::string(serialized_param_raw, param_length); - lua_pushinteger(L,engine->DoAsync(serialized_fct,serialized_params)); + lua_pushinteger(L, engine->DoAsync(serialized_func, serialized_param)); return 1; } |