From 8b832f11d7f9d0c72b1eb5be09b3e8615243a0db Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Thu, 26 Feb 2004 07:28:59 +0000 Subject: [PATCH] unload usb-storage driver between games --- stepmania/src/MemoryCardManager.cpp | 2 ++ stepmania/src/arch/MemoryCard/MemoryCardDriver.h | 3 ++- stepmania/src/arch/MemoryCard/MemoryCardDriver_Linux.cpp | 7 +++++++ 3 files changed, 11 insertions(+), 1 deletion(-) 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