diff --git a/stepmania/src/MemoryCardManager.cpp b/stepmania/src/MemoryCardManager.cpp index 840821d14f..12620335e2 100644 --- a/stepmania/src/MemoryCardManager.cpp +++ b/stepmania/src/MemoryCardManager.cpp @@ -235,4 +235,6 @@ void MemoryCardManager::FlushAllDisks() continue; // skip m_pDriver->Flush(&m_Device[p]); } + + m_pDriver->ResetUsbDeviceNumbers(); } diff --git a/stepmania/src/arch/MemoryCard/MemoryCardDriver.h b/stepmania/src/arch/MemoryCard/MemoryCardDriver.h index ae1724f623..453f7265cb 100644 --- a/stepmania/src/arch/MemoryCard/MemoryCardDriver.h +++ b/stepmania/src/arch/MemoryCard/MemoryCardDriver.h @@ -45,7 +45,8 @@ public: virtual bool StorageDevicesChanged() = 0; virtual void GetStorageDevices( vector& vStorageDevicesOut ) = 0; virtual bool MountAndTestWrite( UsbStorageDevice* pDevice ) = 0; // return false if mount or write fails - virtual void Flush( UsbStorageDevice* pDevice ) { } + virtual void Flush( UsbStorageDevice* pDevice ) {} + virtual void ResetUsbStorage() {}; }; #endif diff --git a/stepmania/src/arch/MemoryCard/MemoryCardDriver_Linux.cpp b/stepmania/src/arch/MemoryCard/MemoryCardDriver_Linux.cpp index ac24e84741..1b912176b2 100644 --- a/stepmania/src/arch/MemoryCard/MemoryCardDriver_Linux.cpp +++ b/stepmania/src/arch/MemoryCard/MemoryCardDriver_Linux.cpp @@ -254,6 +254,13 @@ void MemoryCardDriver_Linux::Flush( UsbStorageDevice* pDevice ) system( sCommand ); } +void MemoryCardDriver_Linux::ResetUsbStorage() +{ + system( "rmmod usb-storage" ); + system( "modprobe usb-storage" ); +} + + /* * Copyright (c) 2003 by the person(s) listed below. All rights reserved. * Chris Danford