Fixed reference counting problems with skin

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@5447 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
auria 2010-05-16 01:26:53 +00:00
parent 2cd92bb6af
commit 0f32d738b4

View File

@ -621,6 +621,8 @@ namespace GUIEngine
{
g_skin = new Skin(g_env->getSkin());
g_env->setSkin(g_skin);
g_skin->drop(); // GUI env grabbed it
assert(g_skin->getReferenceCount() == 1);
}
catch (std::runtime_error& err)
{
@ -631,6 +633,7 @@ namespace GUIEngine
{
g_skin = new Skin(g_env->getSkin());
g_env->setSkin(g_skin);
assert(g_skin->getReferenceCount() == 1);
}
catch (std::runtime_error& err)
{
@ -704,10 +707,12 @@ namespace GUIEngine
return;
}
delete g_skin;
assert(g_skin->getReferenceCount() == 1);
g_skin = newSkin;
g_env->setSkin(g_skin);
g_env->setSkin(g_skin); // will also drop (and thus delete) the previous skin
g_skin->drop(); // g_env grabbed it
assert(g_skin->getReferenceCount() == 1);
}
// -----------------------------------------------------------------------------