diff --git a/stepmania/src/ScreenOptionsMemoryCard.cpp b/stepmania/src/ScreenOptionsMemoryCard.cpp index 003996dece..26f27778ff 100644 --- a/stepmania/src/ScreenOptionsMemoryCard.cpp +++ b/stepmania/src/ScreenOptionsMemoryCard.cpp @@ -19,11 +19,29 @@ void ScreenOptionsMemoryCard::Init() this->SubscribeToMessage( Message_StorageDevicesChanged ); } +bool ScreenOptionsMemoryCard::UpdateCurrentUsbStorageDevices() +{ + vector aOldDevices = m_CurrentUsbStorageDevices; + + const vector &aNewDevices = MEMCARDMAN->GetStorageDevices(); + + m_CurrentUsbStorageDevices.clear(); + for( size_t i = 0; i < aNewDevices.size(); ++i ) + { + const UsbStorageDevice &dev = aNewDevices[i]; + if( dev.m_State == UsbStorageDevice::STATE_CHECKING ) + continue; + m_CurrentUsbStorageDevices.push_back( dev ); + } + + return aOldDevices != m_CurrentUsbStorageDevices; +} + void ScreenOptionsMemoryCard::BeginScreen() { vector vHands; - m_CurrentUsbStorageDevices = MEMCARDMAN->GetStorageDevices(); + UpdateCurrentUsbStorageDevices(); FOREACH_CONST( UsbStorageDevice, m_CurrentUsbStorageDevices, iter ) { diff --git a/stepmania/src/ScreenOptionsMemoryCard.h b/stepmania/src/ScreenOptionsMemoryCard.h index dae0bb80c7..a6096ecef1 100644 --- a/stepmania/src/ScreenOptionsMemoryCard.h +++ b/stepmania/src/ScreenOptionsMemoryCard.h @@ -22,6 +22,7 @@ private: void SelectRowWithMemoryCard( const RString &sOsMountPoint ); + bool UpdateCurrentUsbStorageDevices(); vector m_CurrentUsbStorageDevices; };