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:
parent
db4ea4658c
commit
6ab3b4c838
16 changed files with 571 additions and 1262 deletions
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue