diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index d02d4246a9..e52c87b4be 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -108,7 +108,7 @@ void GameState::Reset() { EndGame(); - MEMCARDMAN->LockCards( true ); + MEMCARDMAN->LockCards(); ASSERT( THEME ); @@ -216,7 +216,7 @@ void GameState::BeginGame() // even if attract sounds are set to off. m_iNumTimesThroughAttract = -1; - MEMCARDMAN->LockCards( false ); + MEMCARDMAN->UnlockCards(); } void GameState::PlayersFinalized() @@ -227,7 +227,7 @@ void GameState::PlayersFinalized() m_bPlayersFinalized = true; MEMCARDMAN->PauseMountingThread(); - MEMCARDMAN->LockCards( true ); // this does a mount + MEMCARDMAN->LockCards(); // this does a mount // apply saved default modifiers if any FOREACH_HumanPlayer( pn ) diff --git a/stepmania/src/MemoryCardManager.cpp b/stepmania/src/MemoryCardManager.cpp index adecfde5ff..3af6a07dbc 100644 --- a/stepmania/src/MemoryCardManager.cpp +++ b/stepmania/src/MemoryCardManager.cpp @@ -213,37 +213,37 @@ MemoryCardState MemoryCardManager::GetCardState( PlayerNumber pn ) return MEMORY_CARD_STATE_READY; } -void MemoryCardManager::LockCards( bool bLock ) +void MemoryCardManager::LockCards() { - bool bWasLocked = m_bCardsLocked; - m_bCardsLocked = bLock; - - if( !bLock ) - { - // clear too late flag - FOREACH_PlayerNumber( p ) - m_bTooLate[p] = false; - } - - 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; - - MountCard( p ); - } - } + if( m_bCardsLocked ) + return; - if( !bLock ) + m_bCardsLocked = true; + + LOG->Trace( "do the final mount" ); + + FOREACH_EnabledPlayer( p ) { - m_pDriver->SetMountThreadState( MemoryCardDriver::detect_and_mount ); + if( m_Device[p].IsBlank() ) // they don't have an assigned card + continue; + + MountCard( p ); } } +void MemoryCardManager::UnlockCards() +{ + m_bCardsLocked = false; + + // clear too late flag + FOREACH_PlayerNumber( p ) + m_bTooLate[p] = false; + + m_pDriver->SetMountThreadState( MemoryCardDriver::detect_and_mount ); +} + + +/* Used by TransferStatsFromMachine, TransferStatsToMachine. Should block. */ void MemoryCardManager::TryMountAllCards() { FOREACH_EnabledPlayer( p ) @@ -255,6 +255,8 @@ void MemoryCardManager::TryMountAllCards() } } +/* When m_bMemoryCardsMountOnlyWhenNecessary, called in EndGame just before writing the + * profile. Should block. */ void MemoryCardManager::MountAllUsedCards() { FOREACH_EnabledPlayer( p ) @@ -337,7 +339,7 @@ bool MemoryCardManager::PathIsMemCard( CString sDir ) const FOREACH_PlayerNumber( p ) if( !sDir.Left(MEM_CARD_MOUNT_POINT[p].size()).CompareNoCase( MEM_CARD_MOUNT_POINT[p] ) ) return true; - return false; + return false; } bool MemoryCardManager::IsNameAvailable( PlayerNumber pn ) const diff --git a/stepmania/src/MemoryCardManager.h b/stepmania/src/MemoryCardManager.h index e9012ab4d3..7e6e41b9be 100644 --- a/stepmania/src/MemoryCardManager.h +++ b/stepmania/src/MemoryCardManager.h @@ -21,7 +21,8 @@ public: // CString GetOsMountDir( PlayerNumber pn ); // only valid when state = ready - void LockCards( bool bLock ); // prevent removing or changing of memory cards + void LockCards(); // prevent removing or changing of memory cards + void UnlockCards(); void TryMountAllCards(); void MountAllUsedCards(); void UnmountAllUsedCards();