From 051f6f6eaad0767f792bb0bd35fb7fbb89e397ca Mon Sep 17 00:00:00 2001 From: "bart@bartbes.ath.cx" Date: Thu, 25 Feb 2010 19:52:00 +0100 Subject: [PATCH] Switched global thread to love._curthread and made love.thread.getThread() return that --- src/modules/thread/sdl/Thread.cpp | 4 +++- src/modules/thread/sdl/wrap_Thread.cpp | 13 +++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/modules/thread/sdl/Thread.cpp b/src/modules/thread/sdl/Thread.cpp index 99cc030fa..e5d892ddb 100644 --- a/src/modules/thread/sdl/Thread.cpp +++ b/src/modules/thread/sdl/Thread.cpp @@ -44,7 +44,9 @@ namespace sdl luaopen_love_thread(L); lua_pushstring(L, comm->getName()); luax_convobj(L, lua_gettop(L), "thread", "getThread"); - lua_setglobal(L, "thread"); + lua_getglobal(L, "love"); + lua_pushvalue(L, -2); + lua_setfield(L, -2, "_curthread"); if(luaL_dostring(L, comm->getCode()) == 1) { ThreadVariant *v = new ThreadVariant(lua_tostring(L, -1)); diff --git a/src/modules/thread/sdl/wrap_Thread.cpp b/src/modules/thread/sdl/wrap_Thread.cpp index d6798fff9..29e2c4bbf 100644 --- a/src/modules/thread/sdl/wrap_Thread.cpp +++ b/src/modules/thread/sdl/wrap_Thread.cpp @@ -276,6 +276,12 @@ namespace sdl int w_getThread(lua_State *L) { + if (lua_isnoneornil(L, 1)) + { + lua_getglobal(L, "love"); + lua_getfield(L, -1, "_curthread"); + return 1; + } std::string name = luaL_checkstring(L, 1); Thread *t = instance->getThread(name); if (t) @@ -311,6 +317,13 @@ namespace sdl try { instance = new ThreadModule(); + lua_getglobal(L, "love"); + Thread *curthread = instance->getThread("main"); + curthread->lock(); + curthread->retain(); + curthread->unlock(); + luax_newtype(L, "Thread", THREAD_THREAD_T, (void*)curthread); + lua_setfield(L, -2, "_curthread"); } catch(Exception & e) {