love.thread can now share full userdata

This commit is contained in:
bart@bartbes.ath.cx
2010-02-14 17:41:11 +01:00
parent cc4d737924
commit 736f7ab1a2
19 changed files with 193 additions and 108 deletions
+16 -1
View File
@@ -79,10 +79,20 @@ namespace sdl
ThreadVariant::ThreadVariant(void *userdata)
{
type = USERDATA;
type = LUSERDATA;
data.userdata = userdata;
}
ThreadVariant::ThreadVariant(Type udatatype, void *userdata)
{
type = FUSERDATA;
this->udatatype = udatatype;
Proxy *p = (Proxy *) userdata;
flags = p->flags;
data.userdata = p->data;
((love::Object *) data.userdata)->retain();
}
ThreadVariant::~ThreadVariant()
{
switch(type)
@@ -90,6 +100,9 @@ namespace sdl
case STRING:
delete[] data.string;
break;
case FUSERDATA:
((love::Object *) data.userdata)->release();
break;
}
}
@@ -222,6 +235,8 @@ namespace sdl
ThreadVariant *v = comm->getValue(name);
while (!v)
{
if (comm->getValue("error"))
return 0;
SDL_CondWait(cond, mutex);
v = comm->getValue(name);
}