summaryrefslogtreecommitdiff
path: root/src/BLua.cc
diff options
context:
space:
mode:
authorNicolas "Pixel" Noble <pixel@nobis-crew.org>2013-08-07 17:58:20 +0200
committerNicolas "Pixel" Noble <pixel@nobis-crew.org>2013-08-07 17:58:20 +0200
commit4ac6cc16fd54c12161b131e3b9bab0ac17dc4d01 (patch)
treef6ff890da75a405bfee1d1a9ed9867d6ec4a9900 /src/BLua.cc
parent24dbb15bf6f2b513e2fb75345345b7b646ff1a81 (diff)
The close operation is actually async too. Meaning that the destroy operation probably should become async...
Diffstat (limited to 'src/BLua.cc')
-rw-r--r--src/BLua.cc7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/BLua.cc b/src/BLua.cc
index e8c5ab6..73995c0 100644
--- a/src/BLua.cc
+++ b/src/BLua.cc
@@ -270,8 +270,7 @@ int Balau::LuaStatics::callwrap(lua_State * __L, lua_CFunction func) {
int Balau::LuaStatics::collector(lua_State * __L) {
Lua L(__L);
LuaObjectBase * o = (LuaObjectBase *) L.touserdata();
- o->destroy();
- return 0;
+ return L.yield(Future<int>([o]() { o->destroy(); return 0; }));
}
int Balau::LuaStatics::destructor(lua_State * __L) {
@@ -279,12 +278,12 @@ int Balau::LuaStatics::destructor(lua_State * __L) {
L.push("__obj");
L.copy();
L.gettable(-3, true);
- collector(__L);
+ LuaObjectBase * o = (LuaObjectBase *) L.touserdata();
L.pop();
L.push();
L.settable(-3, true);
L.pop();
- return 0;
+ return L.yield(Future<int>([o]() { o->destroy(); return 0; }));
}
void Balau::Lua::setCallWrap(lua_CallWrapper wrapper) {