Switched global thread to love._curthread and made love.thread.getThread() return that

This commit is contained in:
bart@bartbes.ath.cx
2010-02-25 19:52:00 +01:00
parent 0f54088d06
commit 051f6f6eaa
2 changed files with 16 additions and 1 deletions
+3 -1
View File
@@ -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));
+13
View File
@@ -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)
{