aboutsummaryrefslogtreecommitdiff
path: root/src/script
diff options
context:
space:
mode:
Diffstat (limited to 'src/script')
-rw-r--r--src/script/cpp_api/s_async.cpp8
-rw-r--r--src/script/cpp_api/s_async.h15
-rw-r--r--src/script/scripting_mainmenu.cpp8
-rw-r--r--src/script/scripting_mainmenu.h4
4 files changed, 23 insertions, 12 deletions
diff --git a/src/script/cpp_api/s_async.cpp b/src/script/cpp_api/s_async.cpp
index 1fb84fab6..a1bec83bf 100644
--- a/src/script/cpp_api/s_async.cpp
+++ b/src/script/cpp_api/s_async.cpp
@@ -100,7 +100,8 @@ void AsyncEngine::initialize(unsigned int numEngines)
}
/******************************************************************************/
-unsigned int AsyncEngine::queueAsyncJob(std::string func, std::string params)
+unsigned int AsyncEngine::queueAsyncJob(const std::string &func,
+ const std::string &params)
{
jobQueueMutex.lock();
LuaJobInfo toAdd;
@@ -124,7 +125,6 @@ LuaJobInfo AsyncEngine::getJob()
jobQueueMutex.lock();
LuaJobInfo retval;
- retval.valid = false;
if (!jobQueue.empty()) {
retval = jobQueue.front();
@@ -137,7 +137,7 @@ LuaJobInfo AsyncEngine::getJob()
}
/******************************************************************************/
-void AsyncEngine::putJobResult(LuaJobInfo result)
+void AsyncEngine::putJobResult(const LuaJobInfo &result)
{
resultQueueMutex.lock();
resultQueue.push_back(result);
@@ -264,7 +264,7 @@ void* AsyncWorkerThread::run()
// Wait for job
LuaJobInfo toProcess = jobDispatcher->getJob();
- if (toProcess.valid == false || stopRequested()) {
+ if (!toProcess.valid || stopRequested()) {
continue;
}
diff --git a/src/script/cpp_api/s_async.h b/src/script/cpp_api/s_async.h
index 016381e5f..93e9759b4 100644
--- a/src/script/cpp_api/s_async.h
+++ b/src/script/cpp_api/s_async.h
@@ -38,7 +38,16 @@ class AsyncEngine;
// Declarations
// Data required to queue a job
-struct LuaJobInfo {
+struct LuaJobInfo
+{
+ LuaJobInfo() :
+ serializedFunction(""),
+ serializedParams(""),
+ serializedResult(""),
+ id(0),
+ valid(false)
+ {}
+
// Function to be called in async environment
std::string serializedFunction;
// Parameter to be passed to function
@@ -89,7 +98,7 @@ public:
* @param params Serialized parameters
* @return jobid The job is queued
*/
- unsigned int queueAsyncJob(std::string func, std::string params);
+ unsigned int queueAsyncJob(const std::string &func, const std::string &params);
/**
* Engine step to process finished jobs
@@ -116,7 +125,7 @@ protected:
* Put a Job result back to result queue
* @param result result of completed job
*/
- void putJobResult(LuaJobInfo result);
+ void putJobResult(const LuaJobInfo &result);
/**
* Initialize environment with current registred functions
diff --git a/src/script/scripting_mainmenu.cpp b/src/script/scripting_mainmenu.cpp
index 61318735d..d79864a95 100644
--- a/src/script/scripting_mainmenu.cpp
+++ b/src/script/scripting_mainmenu.cpp
@@ -77,13 +77,15 @@ void MainMenuScripting::initializeModApi(lua_State *L, int top)
}
/******************************************************************************/
-void MainMenuScripting::step() {
+void MainMenuScripting::step()
+{
asyncEngine.step(getStack());
}
/******************************************************************************/
-unsigned int MainMenuScripting::queueAsync(std::string serialized_func,
- std::string serialized_param) {
+unsigned int MainMenuScripting::queueAsync(const std::string &serialized_func,
+ const std::string &serialized_param)
+{
return asyncEngine.queueAsyncJob(serialized_func, serialized_param);
}
diff --git a/src/script/scripting_mainmenu.h b/src/script/scripting_mainmenu.h
index 3a0795df4..a1385ba9c 100644
--- a/src/script/scripting_mainmenu.h
+++ b/src/script/scripting_mainmenu.h
@@ -39,8 +39,8 @@ public:
void step();
// Pass async events from engine to async threads
- unsigned int queueAsync(std::string serialized_func,
- std::string serialized_params);
+ unsigned int queueAsync(const std::string &serialized_func,
+ const std::string &serialized_params);
private:
void initializeModApi(lua_State *L, int top);