mirror of
https://github.com/luanti-org/luanti.git
synced 2025-10-14 17:15:21 +02: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:
@@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user