Allow Fixture:setUserData and Fixture:getUserData to be called in coroutines (resolves issue #850.)

Bad things will still happen if you call them from a love Thread which didn't create the World and the Fixture object. Don't do it!
This commit is contained in:
Alex Szpakowski
2014-02-15 20:59:57 -04:00
parent 31134ada13
commit 2a19a4444e
3 changed files with 48 additions and 22 deletions
+16 -6
View File
@@ -64,21 +64,31 @@ void Reference::unref()
}
}
void Reference::push()
void Reference::push(lua_State *newL)
{
if (idx != LUA_REFNIL)
{
luax_insist(L, LUA_REGISTRYINDEX, REFERENCE_TABLE_NAME);
lua_rawgeti(L, -1, idx);
lua_remove(L, -2);
luax_insist(newL, LUA_REGISTRYINDEX, REFERENCE_TABLE_NAME);
lua_rawgeti(newL, -1, idx);
lua_remove(newL, -2);
}
else
lua_pushnil(L);
lua_pushnil(newL);
}
lua_State *Reference::getL()
void Reference::push()
{
push(L);
}
lua_State *Reference::getL() const
{
return L;
}
void Reference::setL(lua_State *newL)
{
L = newL;
}
} // love