diff options
Diffstat (limited to 'source/libs/asura-lib-utils/io')
-rw-r--r-- | source/libs/asura-lib-utils/io/io_task.cpp | 15 | ||||
-rw-r--r-- | source/libs/asura-lib-utils/io/io_task.h | 8 |
2 files changed, 17 insertions, 6 deletions
diff --git a/source/libs/asura-lib-utils/io/io_task.cpp b/source/libs/asura-lib-utils/io/io_task.cpp index a96c293..1a50e56 100644 --- a/source/libs/asura-lib-utils/io/io_task.cpp +++ b/source/libs/asura-lib-utils/io/io_task.cpp @@ -1,5 +1,8 @@ #include "io_task.h" +using namespace AEScripting; +using namespace Luax; + namespace AsuraEngine { namespace IO @@ -20,9 +23,17 @@ namespace AsuraEngine return true; } - void IOTask::Invoke() + void IOTask::Invoke(lua_State* thread) { - + if (mCallback) + { + LuaxScopedState state(thread); + if (PushLuaxMemberRef(state, mCallback)) + { + PushLuaxMemberRef(state, mDstRef); + state.Call(1, 0); + } + } } } diff --git a/source/libs/asura-lib-utils/io/io_task.h b/source/libs/asura-lib-utils/io/io_task.h index aa5b38e..a79b2a8 100644 --- a/source/libs/asura-lib-utils/io/io_task.h +++ b/source/libs/asura-lib-utils/io/io_task.h @@ -4,7 +4,7 @@ #include <string> #include "../scripting/portable.hpp" -#include "../threading/thread_task.h" +#include "../threading/task.h" #include "data_buffer.h" @@ -18,7 +18,7 @@ namespace AsuraEngine /// class IOTask ASURA_FINAL : public AEScripting::Portable<IOTask> - , public AEThreading::ThreadTask + , public AEThreading::Task { public: @@ -28,13 +28,13 @@ namespace AsuraEngine ~IOTask(); bool Execute() override ; - void Invoke() override; + void Invoke(lua_State* thread) override; private: std::string mPath; - DataBuffer* mDst; + DataBuffer* mDst; Luax::LuaxMemberRef mDstRef; LUAX_DECL_METHOD(_New); |