From f978af080de407082a52fff78966b2df8a8823cd Mon Sep 17 00:00:00 2001 From: Chris Danford Date: Sat, 20 Mar 2004 22:16:57 +0000 Subject: [PATCH] unmount drive on memory card disconnect --- stepmania/src/MemoryCardManager.cpp | 2 ++ stepmania/src/arch/MemoryCard/MemoryCardDriver.h | 1 + stepmania/src/arch/MemoryCard/MemoryCardDriver_Null.h | 2 +- stepmania/src/arch/MemoryCard/MemoryCardDriver_Windows.cpp | 5 +++++ stepmania/src/arch/MemoryCard/MemoryCardDriver_Windows.h | 1 + 5 files changed, 10 insertions(+), 1 deletion(-) diff --git a/stepmania/src/MemoryCardManager.cpp b/stepmania/src/MemoryCardManager.cpp index 52342cfe3a..232ac27eef 100644 --- a/stepmania/src/MemoryCardManager.cpp +++ b/stepmania/src/MemoryCardManager.cpp @@ -99,6 +99,8 @@ void MemoryCardManager::Update( float fDelta ) if( PROFILEMAN->ProfileWasLoadedFromMemoryCard((PlayerNumber)p) ) PROFILEMAN->UnloadProfile( (PlayerNumber)p ); + + m_pDriver->Unmount(&m_Device[p], MEM_CARD_MOUNT_POINT[p]); } } } diff --git a/stepmania/src/arch/MemoryCard/MemoryCardDriver.h b/stepmania/src/arch/MemoryCard/MemoryCardDriver.h index 6cdda31784..e4067d30b0 100644 --- a/stepmania/src/arch/MemoryCard/MemoryCardDriver.h +++ b/stepmania/src/arch/MemoryCard/MemoryCardDriver.h @@ -44,6 +44,7 @@ public: virtual bool StorageDevicesChanged() = 0; virtual void GetStorageDevices( vector& vStorageDevicesOut ) = 0; virtual bool MountAndTestWrite( UsbStorageDevice* pDevice, CString sMountPoint ) = 0; // return false if mount or write fails + virtual void Unmount( UsbStorageDevice* pDevice, CString sMountPoint ) = 0; virtual void Flush( UsbStorageDevice* pDevice ) {} virtual void ResetUsbStorage() {}; }; diff --git a/stepmania/src/arch/MemoryCard/MemoryCardDriver_Null.h b/stepmania/src/arch/MemoryCard/MemoryCardDriver_Null.h index 243884a485..7211436f4f 100644 --- a/stepmania/src/arch/MemoryCard/MemoryCardDriver_Null.h +++ b/stepmania/src/arch/MemoryCard/MemoryCardDriver_Null.h @@ -10,7 +10,7 @@ public: virtual bool StorageDevicesChanged() { return false; }; virtual void GetStorageDevices( vector& vStorageDevicesOut ) {}; virtual bool MountAndTestWrite( UsbStorageDevice* pDevice, CString sMountPoint ) { return false; }; - virtual void Flush( UsbStorageDevice* pDevice ) {}; + virtual void Unmount( UsbStorageDevice* pDevice, CString sMountPoint ) {}; }; #endif diff --git a/stepmania/src/arch/MemoryCard/MemoryCardDriver_Windows.cpp b/stepmania/src/arch/MemoryCard/MemoryCardDriver_Windows.cpp index fd6b5a43aa..b8c64e73d6 100644 --- a/stepmania/src/arch/MemoryCard/MemoryCardDriver_Windows.cpp +++ b/stepmania/src/arch/MemoryCard/MemoryCardDriver_Windows.cpp @@ -101,6 +101,11 @@ bool MemoryCardDriver_Windows::MountAndTestWrite( UsbStorageDevice* pDevice, CSt return true; } +void MemoryCardDriver_Windows::Unmount( UsbStorageDevice* pDevice, CString sMountPoint ) +{ + +} + void MemoryCardDriver_Windows::Flush( UsbStorageDevice* pDevice ) { // Do we need anything here? I don't lose data if ejecting diff --git a/stepmania/src/arch/MemoryCard/MemoryCardDriver_Windows.h b/stepmania/src/arch/MemoryCard/MemoryCardDriver_Windows.h index bbbba7a0e4..4eaf07f177 100644 --- a/stepmania/src/arch/MemoryCard/MemoryCardDriver_Windows.h +++ b/stepmania/src/arch/MemoryCard/MemoryCardDriver_Windows.h @@ -12,6 +12,7 @@ public: virtual bool StorageDevicesChanged(); virtual void GetStorageDevices( vector& vStorageDevicesOut ); virtual bool MountAndTestWrite( UsbStorageDevice* pDevice, CString sMountPoint ); + virtual void Unmount( UsbStorageDevice* pDevice, CString sMountPoint ); virtual void Flush( UsbStorageDevice* pDevice ); protected: DWORD m_dwLastLogicalDrives;