From f65c1d3fbbd8a4163efd824590dfe5392e9ee9c3 Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Sun, 3 Oct 2004 06:21:16 +0000 Subject: [PATCH] only remount cards that were in use --- stepmania/src/GameState.cpp | 4 ++-- stepmania/src/MemoryCardManager.cpp | 21 ++++++++++++++++++-- stepmania/src/MemoryCardManager.h | 5 +++-- stepmania/src/ScreenDownloadMachineStats.cpp | 2 +- 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/stepmania/src/GameState.cpp b/stepmania/src/GameState.cpp index c4d35fcee4..ea7e8315a8 100644 --- a/stepmania/src/GameState.cpp +++ b/stepmania/src/GameState.cpp @@ -271,7 +271,7 @@ void GameState::PlayersFinalized() } if( PREFSMAN->m_bMemoryCardsMountOnlyWhenNecessary ) - MEMCARDMAN->UnmountAllCards(); + MEMCARDMAN->UnmountAllUsedCards(); } /* This data is added to each player profile, and to the machine profile per-player. */ @@ -345,7 +345,7 @@ void GameState::EndGame() if( PREFSMAN->m_bMemoryCardsMountOnlyWhenNecessary ) - MEMCARDMAN->MountAllCards(); + MEMCARDMAN->UnmountAllUsedCards(); BOOKKEEPER->WriteToDisk(); diff --git a/stepmania/src/MemoryCardManager.cpp b/stepmania/src/MemoryCardManager.cpp index c2c2c7660e..7055829037 100644 --- a/stepmania/src/MemoryCardManager.cpp +++ b/stepmania/src/MemoryCardManager.cpp @@ -222,7 +222,7 @@ void MemoryCardManager::LockCards( bool bLock ) m_pDriver->SetMountThreadState( MemoryCardDriver::detect_and_mount ); } -void MemoryCardManager::MountAllCards() +void MemoryCardManager::TryMountAllCards() { FOREACH_PlayerNumber( p ) { @@ -233,13 +233,30 @@ void MemoryCardManager::MountAllCards() } } -void MemoryCardManager::UnmountAllCards() +void MemoryCardManager::MountAllUsedCards() { FOREACH_PlayerNumber( p ) { if( m_Device[p].IsBlank() ) // they don't have an assigned card continue; + if( m_bTooLate[p] || !m_Device[p].bWriteTestSucceeded ) + continue; + + m_pDriver->MountAndTestWrite(&m_Device[p], MEM_CARD_MOUNT_POINT[p]); + } +} + +void MemoryCardManager::UnmountAllUsedCards() +{ + FOREACH_PlayerNumber( p ) + { + if( m_Device[p].IsBlank() ) // they don't have an assigned card + continue; + + if( m_bTooLate[p] || !m_Device[p].bWriteTestSucceeded ) + continue; + m_pDriver->Unmount(&m_Device[p], MEM_CARD_MOUNT_POINT[p]); } } diff --git a/stepmania/src/MemoryCardManager.h b/stepmania/src/MemoryCardManager.h index c3b8fa3e48..facbdd1772 100644 --- a/stepmania/src/MemoryCardManager.h +++ b/stepmania/src/MemoryCardManager.h @@ -27,8 +27,9 @@ public: // CString GetOsMountDir( PlayerNumber pn ); // only valid when state = ready void LockCards( bool bLock ); // prevent removing or changing of memory cards - void MountAllCards(); - void UnmountAllCards(); + void TryMountAllCards(); + void MountAllUsedCards(); + void UnmountAllUsedCards(); void MountCard( PlayerNumber pn ); void UnmountCard( PlayerNumber pn ); diff --git a/stepmania/src/ScreenDownloadMachineStats.cpp b/stepmania/src/ScreenDownloadMachineStats.cpp index 7e8b9f84d4..cdd08f6c07 100644 --- a/stepmania/src/ScreenDownloadMachineStats.cpp +++ b/stepmania/src/ScreenDownloadMachineStats.cpp @@ -10,7 +10,7 @@ static void SaveMachineStatsToFirstMemCard() { - MEMCARDMAN->MountAllCards(); + MEMCARDMAN->TryMountAllCards(); FOREACH_PlayerNumber( pn ) {