From b6084073e9bee2b98004fd2b0f5a0b13be7d0212 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Wed, 6 Aug 2003 08:06:27 +0000 Subject: [PATCH] fix crash after Reload Songs-Courses --- stepmania/src/ScreenOptionsMenu.cpp | 3 +- stepmania/src/SongManager.cpp | 47 +++++++++++++++-------------- stepmania/src/SongManager.h | 8 ++--- 3 files changed, 29 insertions(+), 29 deletions(-) diff --git a/stepmania/src/ScreenOptionsMenu.cpp b/stepmania/src/ScreenOptionsMenu.cpp index 50ab0a8160..a247a5f195 100644 --- a/stepmania/src/ScreenOptionsMenu.cpp +++ b/stepmania/src/ScreenOptionsMenu.cpp @@ -107,8 +107,7 @@ void ScreenOptionsMenu::GoToNextState() case OM_MACHINE: SCREENMAN->SetNewScreen("ScreenMachineOptions"); break; // case OM_SOUND: SCREENMAN->SetNewScreen("ScreenSoundOptions"); break; case OM_RELOAD: - SONGMAN->ReloadSongs(); - SONGMAN->ReloadCourses(); + SONGMAN->Reload(); SCREENMAN->SetNewScreen( "ScreenTitleMenu" ); break; default: // Exit diff --git a/stepmania/src/SongManager.cpp b/stepmania/src/SongManager.cpp index bf6979e0f3..8a99518f6e 100644 --- a/stepmania/src/SongManager.cpp +++ b/stepmania/src/SongManager.cpp @@ -95,21 +95,22 @@ SongManager::~SongManager() } -void SongManager::ReloadSongs() +void SongManager::Reload() { FlushDirCache(); - FreeSongs(); - InitSongsFromDisk(NULL); -} -void SongManager::ReloadCourses() -{ - FlushDirCache(); + FreeSongs(); FreeCourses(); + + m_sGroupNames.clear(); + m_sGroupBannerPaths.clear(); + + InitSongsFromDisk(NULL); InitCoursesFromDisk(NULL); InitAutogenCourses(); } + void SongManager::SaveMachineScoresToDisk() { SaveCategoryRankingsToFile( CATEGORY_RANKING_FILE ); @@ -155,10 +156,10 @@ void SongManager::SanityCheckGroupDir( CString sDir ) const void SongManager::AddGroup( CString sDir, CString sGroupDirName ) { unsigned j; - for(j = 0; j < m_arrayGroupNames.size(); ++j) - if( sGroupDirName == m_arrayGroupNames[j] ) break; + for(j = 0; j < m_sGroupNames.size(); ++j) + if( sGroupDirName == m_sGroupNames[j] ) break; - if( j != m_arrayGroupNames.size() ) + if( j != m_sGroupNames.size() ) return; /* the group is already added */ // Look for a group banner in this group folder @@ -184,8 +185,8 @@ void SongManager::AddGroup( CString sDir, CString sGroupDirName ) if( sBannerPath != "" ) LOG->Trace( "Group banner for '%s' is '%s'.", sGroupDirName.c_str(), sBannerPath.c_str() ); - m_arrayGroupNames.push_back( sGroupDirName ); - m_GroupBannerPaths.push_back(sBannerPath); + m_sGroupNames.push_back( sGroupDirName ); + m_sGroupBannerPaths.push_back(sBannerPath); } void SongManager::LoadStepManiaSongDir( CString sDir, LoadingWindow *ld ) @@ -263,7 +264,7 @@ void SongManager::FreeSongs() SAFE_DELETE( m_pSongs[i] ); m_pSongs.clear(); - m_GroupBannerPaths.clear(); + m_sGroupBannerPaths.clear(); } @@ -608,23 +609,23 @@ void SongManager::SaveCourseScoresToFile( CString fn, int c ) CString SongManager::GetGroupBannerPath( CString sGroupName ) { unsigned i; - for(i = 0; i < m_arrayGroupNames.size(); ++i) - if( sGroupName == m_arrayGroupNames[i] ) break; + for(i = 0; i < m_sGroupNames.size(); ++i) + if( sGroupName == m_sGroupNames[i] ) break; - if( i == m_arrayGroupNames.size() ) + if( i == m_sGroupNames.size() ) return ""; - return m_GroupBannerPaths[i]; + return m_sGroupBannerPaths[i]; } void SongManager::GetGroupNames( CStringArray &AddTo ) { - AddTo.insert(AddTo.end(), m_arrayGroupNames.begin(), m_arrayGroupNames.end() ); + AddTo.insert(AddTo.end(), m_sGroupNames.begin(), m_sGroupNames.end() ); } bool SongManager::DoesGroupExist( CString sGroupName ) { - return find( m_arrayGroupNames.begin(), m_arrayGroupNames.end(), sGroupName ) != m_arrayGroupNames.end(); + return find( m_sGroupNames.begin(), m_sGroupNames.end(), sGroupName ) != m_sGroupNames.end(); } RageColor SongManager::GetGroupColor( const CString &sGroupName ) @@ -633,12 +634,12 @@ RageColor SongManager::GetGroupColor( const CString &sGroupName ) // search for the group index unsigned i; - for( i=0; i m_pSongs; // all songs that can be played vector m_pBestSongs; - CStringArray m_arrayGroupNames; - CStringArray m_GroupBannerPaths; // each song group has a banner associated with it + CStringArray m_sGroupNames; + CStringArray m_sGroupBannerPaths; // each song group may have a banner associated with it vector m_pCourses; };