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/scripting_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/scripting_mainmenu.cpp')
-rw-r--r-- | src/script/scripting_mainmenu.cpp | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/src/script/scripting_mainmenu.cpp b/src/script/scripting_mainmenu.cpp index a4619e9da..58ed6238c 100644 --- a/src/script/scripting_mainmenu.cpp +++ b/src/script/scripting_mainmenu.cpp @@ -28,9 +28,11 @@ with this program; if not, write to the Free Software Foundation, Inc., extern "C" { #include "lualib.h" - int luaopen_marshal(lua_State *L); } -/******************************************************************************/ + +#define MAINMENU_ASYNC_THREADS 4 + + MainMenuScripting::MainMenuScripting(GUIEngine* guiengine) { setGuiEngine(guiengine); @@ -38,32 +40,31 @@ MainMenuScripting::MainMenuScripting(GUIEngine* guiengine) //TODO add security luaL_openlibs(getStack()); - luaopen_marshal(getStack()); SCRIPTAPI_PRECHECKHEADER + lua_newtable(L); + lua_setglobal(L, "engine"); + lua_getglobal(L, "engine"); + int top = lua_gettop(L); + lua_pushstring(L, DIR_DELIM); lua_setglobal(L, "DIR_DELIM"); lua_newtable(L); lua_setglobal(L, "gamedata"); - lua_newtable(L); - lua_setglobal(L, "engine"); - // Initialize our lua_api modules - lua_getglobal(L, "engine"); - int top = lua_gettop(L); InitializeModApi(L, top); lua_pop(L, 1); - infostream << "SCRIPTAPI: initialized mainmenu modules" << std::endl; + infostream << "SCRIPTAPI: Initialized main menu modules" << std::endl; } /******************************************************************************/ void MainMenuScripting::InitializeModApi(lua_State *L, int top) { - // Initialize mod api modules + // Initialize mod API modules ModApiMainMenu::Initialize(L, top); ModApiUtil::Initialize(L, top); @@ -76,16 +77,17 @@ void MainMenuScripting::InitializeModApi(lua_State *L, int top) // Initialize async environment //TODO possibly make number of async threads configurable - m_AsyncEngine.Initialize(MAINMENU_NUMBER_OF_ASYNC_THREADS); + m_AsyncEngine.Initialize(MAINMENU_ASYNC_THREADS); } /******************************************************************************/ void MainMenuScripting::Step() { - m_AsyncEngine.Step(getStack()); + m_AsyncEngine.Step(getStack(), m_errorhandler); } /******************************************************************************/ -unsigned int MainMenuScripting::DoAsync(std::string serialized_fct, - std::string serialized_params) { - return m_AsyncEngine.doAsyncJob(serialized_fct,serialized_params); +unsigned int MainMenuScripting::DoAsync(std::string serialized_func, + std::string serialized_param) { + return m_AsyncEngine.doAsyncJob(serialized_func, serialized_param); } + |