diff --git a/stepmania/src/MemoryCardManager.cpp b/stepmania/src/MemoryCardManager.cpp index 31f6495471..1a31b105f2 100644 --- a/stepmania/src/MemoryCardManager.cpp +++ b/stepmania/src/MemoryCardManager.cpp @@ -413,6 +413,7 @@ void MemoryCardManager::CheckStateChanges() UsbStorageDevice &new_device = m_Device[p]; MemoryCardState state = MEMORY_CARD_STATE_INVALID; + CString sError; if( m_bCardsLocked ) { @@ -434,9 +435,9 @@ void MemoryCardManager::CheckStateChanges() { if( m_FinalDevice[p].sSerial != new_device.sSerial ) { - /* A different card is inserted than we had when we finalized; - * ignore it. */ - state = MEMORY_CARD_STATE_REMOVED; + /* A different card is inserted than we had when we finalized. */ + state = MEMORY_CARD_STATE_ERROR; + sError = "Changed"; } } @@ -458,6 +459,7 @@ void MemoryCardManager::CheckStateChanges() case UsbStorageDevice::STATE_ERROR: state = MEMORY_CARD_STATE_ERROR; + sError = new_device.m_sError; break; case UsbStorageDevice::STATE_READY: @@ -489,6 +491,7 @@ void MemoryCardManager::CheckStateChanges() } m_State[p] = state; + m_sError[p] = sError; } } diff --git a/stepmania/src/ScreenSystemLayer.cpp b/stepmania/src/ScreenSystemLayer.cpp index 3807b4af9c..5fe55e54f0 100644 --- a/stepmania/src/ScreenSystemLayer.cpp +++ b/stepmania/src/ScreenSystemLayer.cpp @@ -21,7 +21,6 @@ ScreenSystemLayer::ScreenSystemLayer( const CString &sName ) : Screen(sName) CREDITS_PRESS_START.Load("ScreenSystemLayer","CreditsPressStart"); CREDITS_INSERT_CARD.Load("ScreenSystemLayer","CreditsInsertCard"); - CREDITS_CARD_ERROR.Load("ScreenSystemLayer","CreditsCardError"); CREDITS_CARD_TOO_LATE.Load("ScreenSystemLayer","CreditsCardTooLate"); CREDITS_CARD_NO_NAME.Load("ScreenSystemLayer","CreditsCardNoName"); CREDITS_CARD_READY.Load("ScreenSystemLayer","CreditsCardReady"); @@ -145,7 +144,7 @@ CString ScreenSystemLayer::GetCreditsMessage( PlayerNumber pn ) const else return ""; - case MEMORY_CARD_STATE_ERROR: return CREDITS_CARD_ERROR.GetValue(); + case MEMORY_CARD_STATE_ERROR: return THEME->GetMetric( m_sName, "CreditsCard" + MEMCARDMAN->GetCardError(pn) ); case MEMORY_CARD_STATE_TOO_LATE: return CREDITS_CARD_TOO_LATE.GetValue(); case MEMORY_CARD_STATE_CHECKING: return CREDITS_CARD_CHECKING.GetValue(); case MEMORY_CARD_STATE_REMOVED: return CREDITS_CARD_REMOVED.GetValue(); diff --git a/stepmania/src/ScreenSystemLayer.h b/stepmania/src/ScreenSystemLayer.h index 7172a9fe2c..a34c664527 100644 --- a/stepmania/src/ScreenSystemLayer.h +++ b/stepmania/src/ScreenSystemLayer.h @@ -37,7 +37,6 @@ private: ThemeMetric CREDITS_PRESS_START; ThemeMetric CREDITS_INSERT_CARD; - ThemeMetric CREDITS_CARD_ERROR; ThemeMetric CREDITS_CARD_TOO_LATE; ThemeMetric CREDITS_CARD_NO_NAME; ThemeMetric CREDITS_CARD_READY; diff --git a/stepmania/src/arch/MemoryCard/MemoryCardDriver.h b/stepmania/src/arch/MemoryCard/MemoryCardDriver.h index 85e67307cb..306ab09ea8 100644 --- a/stepmania/src/arch/MemoryCard/MemoryCardDriver.h +++ b/stepmania/src/arch/MemoryCard/MemoryCardDriver.h @@ -47,6 +47,9 @@ struct UsbStorageDevice STATE_READY, }; State m_State; + CString m_sError; + + void SetError( const CString &sError ) { m_State = STATE_ERROR; m_sError = sError; } bool bIsNameAvailable; // Name in the profile on the memory card. CString sName; // Name in the profile on the memory card. diff --git a/stepmania/src/arch/MemoryCard/MemoryCardDriverThreaded_Linux.cpp b/stepmania/src/arch/MemoryCard/MemoryCardDriverThreaded_Linux.cpp index 4765622e18..ca78881e96 100644 --- a/stepmania/src/arch/MemoryCard/MemoryCardDriverThreaded_Linux.cpp +++ b/stepmania/src/arch/MemoryCard/MemoryCardDriverThreaded_Linux.cpp @@ -220,10 +220,17 @@ bool MemoryCardDriverThreaded_Linux::DoOneUpdate( bool bMount, vectorUnmount( "dir", d.sOsMountDir, TEMP_MOUNT_POINT ); - CString sCommand = "umount " + d.sOsMountDir; - ExecuteCommand( sCommand ); } - else - d.m_State = UsbStorageDevice::STATE_ERROR; + + ExecuteCommand( "umount " + d.sOsMountDir ); LOG->Trace( "WriteTest: %s, Name: %s", d.m_State == UsbStorageDevice::STATE_ERROR? "failed":"succeeded", d.sName.c_str() ); } diff --git a/stepmania/src/arch/MemoryCard/MemoryCardDriverThreaded_Windows.cpp b/stepmania/src/arch/MemoryCard/MemoryCardDriverThreaded_Windows.cpp index 06d157a387..c76fb96c1c 100644 --- a/stepmania/src/arch/MemoryCard/MemoryCardDriverThreaded_Windows.cpp +++ b/stepmania/src/arch/MemoryCard/MemoryCardDriverThreaded_Windows.cpp @@ -89,7 +89,10 @@ bool MemoryCardDriverThreaded_Windows::DoOneUpdate( bool bMount, vectorMount( &usbd );