1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-08-11 17:51:04 +00:00

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
This commit is contained in:
ShadowNinja 2014-04-15 13:41:07 -04:00
parent db4ea4658c
commit 6ab3b4c838
16 changed files with 571 additions and 1262 deletions

View file

@ -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, &param_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;
}