From 3bd3fabc44e4d7dec0a8b5d34802efa8e0557eeb Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Sun, 4 Sep 2005 18:25:09 +0000 Subject: [PATCH] fix Character::UndemandGraphics unloading graphics too early if used by multiple screens at once --- stepmania/src/Character.cpp | 18 ++++++++++++++---- stepmania/src/Character.h | 3 ++- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/stepmania/src/Character.cpp b/stepmania/src/Character.cpp index 224f45b207..8fffa1e0a8 100644 --- a/stepmania/src/Character.cpp +++ b/stepmania/src/Character.cpp @@ -4,6 +4,10 @@ #include "RageUtil.h" #include "RageTextureID.h" +Character::Character() +{ + m_iPreloadRefcount = 0; +} bool Character::Load( CString sCharDir ) { @@ -172,14 +176,20 @@ bool Character::Has2DElems() void Character::DemandGraphics() { - CString s = GetIconPath(); - if( !s.empty() ) - m_Preload.Load( s ); + ++m_iPreloadRefcount; + if( m_iPreloadRefcount == 1 ) + { + CString s = GetIconPath(); + if( !s.empty() ) + m_Preload.Load( s ); + } } void Character::UndemandGraphics() { - m_Preload.UnloadAll(); + --m_iPreloadRefcount; + if( m_iPreloadRefcount == 0 ) + m_Preload.UnloadAll(); } // lua start diff --git a/stepmania/src/Character.h b/stepmania/src/Character.h index 2777ce27b8..20b96886a4 100644 --- a/stepmania/src/Character.h +++ b/stepmania/src/Character.h @@ -12,7 +12,7 @@ typedef lua_State Lua; class Character { public: -// Character(); + Character(); ~Character() { } bool Load( CString sCharDir ); // return true if success @@ -59,6 +59,7 @@ public: CString m_sAttacks[NUM_ATTACK_LEVELS][NUM_ATTACKS_PER_LEVEL]; RageTexturePreloader m_Preload; + int m_iPreloadRefcount; }; #endif