From ee9fbb99e18eff413da48d64e02afc9c6ec041e9 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Sat, 14 Aug 2004 19:18:56 +0000 Subject: [PATCH] fix "memory card not mounted if initially plugged in while cards are locked" do the final memory card mount on PlayersFinalized --- stepmania/src/GameState.cpp | 4 ++- stepmania/src/MemoryCardManager.cpp | 43 +++++++++++++---------------- stepmania/src/SongManager.cpp | 2 -- 3 files changed, 22 insertions(+), 27 deletions(-) diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index b51a099fa8..4c8596aad1 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -40,6 +40,7 @@ GameState* GAMESTATE = NULL; // global and accessable from anywhere in our progr GameState::GameState() { m_pPosition = NULL; + m_pCurStyle = NULL; m_pCurGame = NULL; m_iCoins = 0; @@ -243,7 +244,6 @@ void GameState::PlayersFinalized() m_bPlayersFinalized = true; MEMCARDMAN->LockCards( true ); - SONGMAN->LoadAllFromProfiles(); // apply saved default modifiers if any @@ -274,6 +274,8 @@ void GameState::PlayersFinalized() m_pPreferredCourse = pProfile->m_lastCourse.ToCourse(); } + SONGMAN->LoadAllFromProfiles(); + FOREACH_PlayerNumber( pn ) { if( !IsHumanPlayer(pn) ) diff --git a/stepmania/src/MemoryCardManager.cpp b/stepmania/src/MemoryCardManager.cpp index c8d2c35fdb..2e285448bd 100644 --- a/stepmania/src/MemoryCardManager.cpp +++ b/stepmania/src/MemoryCardManager.cpp @@ -112,24 +112,9 @@ MemoryCardState MemoryCardManager::GetCardState( PlayerNumber pn ) return MEMORY_CARD_STATE_READY; } -/* -CString MemoryCardManager::GetOsMountDir( PlayerNumber pn ) -{ - if( m_Device[pn].IsBlank() ) - return ""; - else - { - CString sDir = m_Device[pn].sOsMountDir; - FixSlashesInPlace( sDir ); - if( !sDir.empty() && sDir.Right(1)!="/" ) - sDir += '/'; - return sDir; - } -} -*/ - void MemoryCardManager::LockCards( bool bLock ) { + bool bWasLocked = m_bCardsLocked; m_bCardsLocked = bLock; if( !bLock ) @@ -139,7 +124,24 @@ void MemoryCardManager::LockCards( bool bLock ) m_bTooLate[p] = false; } - if( m_bCardsLocked ) + if( !bWasLocked && bLock ) + { + LOG->Trace( "do the final mount" ); + + FOREACH_EnabledPlayer( p ) + { + if( m_Device[p].IsBlank() ) // they don't have an assigned card + continue; + + if( !m_pDriver->MountAndTestWrite(&m_Device[p], MEM_CARD_MOUNT_POINT[p]) ) + { + m_bWriteError[p] = true; + } + } + } + + + if( !bWasLocked && bLock ) m_pDriver->SetMountThreadState( MemoryCardDriver::detect_and_dont_mount ); else m_pDriver->SetMountThreadState( MemoryCardDriver::detect_and_mount ); @@ -231,13 +233,6 @@ match: vUnassignedDevices.erase( vUnassignedDevices.begin()+i ); // remove the device so we don't match it for another player m_bTooLate[p] = m_bCardsLocked; m_bWriteError[p] = false; - if( !m_bCardsLocked ) - { - if( !m_pDriver->MountAndTestWrite(&m_Device[p], MEM_CARD_MOUNT_POINT[p]) ) - { - m_bWriteError[p] = true; - } - } if( !m_bDontPlaySoundsOnce ) { diff --git a/stepmania/src/SongManager.cpp b/stepmania/src/SongManager.cpp index ba4e077c70..0f7aeb2005 100644 --- a/stepmania/src/SongManager.cpp +++ b/stepmania/src/SongManager.cpp @@ -1121,8 +1121,6 @@ void SongManager::LoadAllFromProfiles() { CString sEditsDir = sProfileDir+"Edits/"; - FILEMAN->FlushDirCache( sEditsDir ); - CStringArray asEditsFilesWithPath; GetDirListing( sEditsDir+"*.sm", asEditsFilesWithPath, false, true );