release no longer needed noteskins
This commit is contained in:
@@ -75,6 +75,17 @@ void NoteField::CacheNoteSkin( const RString &sNoteSkin_ )
|
|||||||
m_NoteDisplays[ sNoteSkin ] = nd;
|
m_NoteDisplays[ sNoteSkin ] = nd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NoteField::UncacheNoteSkin( const RString &sNoteSkin_ )
|
||||||
|
{
|
||||||
|
RString sNoteSkin( sNoteSkin_ );
|
||||||
|
sNoteSkin.ToLower();
|
||||||
|
|
||||||
|
LOG->Trace("NoteField::CacheNoteSkin: release %s", sNoteSkin.c_str() );
|
||||||
|
ASSERT_M( m_NoteDisplays.find(sNoteSkin) != m_NoteDisplays.end(), sNoteSkin );
|
||||||
|
delete m_NoteDisplays[sNoteSkin];
|
||||||
|
m_NoteDisplays.erase( sNoteSkin );
|
||||||
|
}
|
||||||
|
|
||||||
void NoteField::CacheAllUsedNoteSkins()
|
void NoteField::CacheAllUsedNoteSkins()
|
||||||
{
|
{
|
||||||
/* Cache all note skins that we might need for the whole song, course or battle
|
/* Cache all note skins that we might need for the whole song, course or battle
|
||||||
@@ -85,6 +96,17 @@ void NoteField::CacheAllUsedNoteSkins()
|
|||||||
|
|
||||||
for( unsigned i=0; i < asSkins.size(); ++i )
|
for( unsigned i=0; i < asSkins.size(); ++i )
|
||||||
CacheNoteSkin( asSkins[i] );
|
CacheNoteSkin( asSkins[i] );
|
||||||
|
|
||||||
|
/* If we're changing note skins in the editor, we can have old note skins lying
|
||||||
|
* around. Remove them so they don't accumulate. */
|
||||||
|
set<RString> setNoteSkinsToUnload;
|
||||||
|
FOREACHM( RString, NoteDisplayCols *, m_NoteDisplays, d )
|
||||||
|
{
|
||||||
|
if( find(asSkins.begin(), asSkins.end(), d->first) == asSkins.end() )
|
||||||
|
setNoteSkinsToUnload.insert( d->first );
|
||||||
|
}
|
||||||
|
FOREACHS( RString, setNoteSkinsToUnload, s )
|
||||||
|
UncacheNoteSkin( *s );
|
||||||
}
|
}
|
||||||
|
|
||||||
void NoteField::Init( const PlayerState* pPlayerState, float fYReverseOffsetPixels )
|
void NoteField::Init( const PlayerState* pPlayerState, float fYReverseOffsetPixels )
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
void CacheNoteSkin( const RString &sNoteSkin );
|
void CacheNoteSkin( const RString &sNoteSkin );
|
||||||
|
void UncacheNoteSkin( const RString &sNoteSkin );
|
||||||
|
|
||||||
bool IsOnScreen( float fBeat, int iFirstPixelToDraw, int iLastPixelToDraw ) const;
|
bool IsOnScreen( float fBeat, int iFirstPixelToDraw, int iLastPixelToDraw ) const;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user