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

@ -186,19 +186,20 @@ GUIEngine::GUIEngine( irr::IrrlichtDevice* dev,
// Initialize scripting
infostream<<"GUIEngine: Initializing Lua"<<std::endl;
infostream << "GUIEngine: Initializing Lua" << std::endl;
m_script = new MainMenuScripting(this);
try {
if (m_data->errormessage != "")
{
if (m_data->errormessage != "") {
m_script->setMainMenuErrorMessage(m_data->errormessage);
m_data->errormessage = "";
}
if (!loadMainMenuScript())
assert("no future without mainmenu" == 0);
if (!loadMainMenuScript()) {
errorstream << "No future without mainmenu" << std::endl;
abort();
}
run();
}
@ -512,32 +513,25 @@ bool GUIEngine::setTexture(texture_layer layer,std::string texturepath) {
/******************************************************************************/
bool GUIEngine::downloadFile(std::string url,std::string target) {
#if USE_CURL
bool retval = true;
std::ofstream targetfile(target.c_str(), std::ios::out | std::ios::binary);
FILE* targetfile = fopen(target.c_str(),"wb");
if (targetfile) {
HTTPFetchRequest fetchrequest;
HTTPFetchResult fetchresult;
fetchrequest.url = url;
fetchrequest.caller = HTTPFETCH_SYNC;
httpfetch_sync(fetchrequest,fetchresult);
if (fetchresult.succeeded) {
if (fwrite(fetchresult.data.c_str(),1,fetchresult.data.size(),targetfile) != fetchresult.data.size()) {
retval = false;
}
}
else {
retval = false;
}
fclose(targetfile);
}
else {
retval = false;
if (!targetfile.good()) {
return false;
}
return retval;
HTTPFetchRequest fetchrequest;
HTTPFetchResult fetchresult;
fetchrequest.url = url;
fetchrequest.caller = HTTPFETCH_SYNC;
httpfetch_sync(fetchrequest, fetchresult);
if (fetchresult.succeeded) {
targetfile << fetchresult.data;
} else {
return false;
}
return true;
#else
return false;
#endif