From 725cdd7e5b9c1551865d04b4be26fba1fdc2c3fa Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Mon, 15 Mar 2004 03:51:39 +0000 Subject: [PATCH] unmount fix --- .../src/arch/MemoryCard/MemoryCardDriver_Linux.cpp | 11 +++++++++++ .../src/arch/MemoryCard/MemoryCardDriver_Windows.cpp | 6 ++++++ 2 files changed, 17 insertions(+) diff --git a/stepmania/src/arch/MemoryCard/MemoryCardDriver_Linux.cpp b/stepmania/src/arch/MemoryCard/MemoryCardDriver_Linux.cpp index 1d2a75d165..afb4fdc9ca 100644 --- a/stepmania/src/arch/MemoryCard/MemoryCardDriver_Linux.cpp +++ b/stepmania/src/arch/MemoryCard/MemoryCardDriver_Linux.cpp @@ -53,6 +53,11 @@ bool MemoryCardDriver_Linux::StorageDevicesChanged() void MemoryCardDriver_Linux::GetStorageDevices( vector& vDevicesOut ) { + UsbStorageDevice usbd; + usbd.sOsMountDir = "/mnt"; + vDevicesOut.push_back( usbd ); + return; + usleep(1000); /* If we couldn't open it before, we probably can't open it now; don't @@ -260,7 +265,13 @@ bool MemoryCardDriver_Linux::MountAndTestWrite( UsbStorageDevice* pDevice, CStri vector Mounts; FILEMAN->GetLoadedDrivers( Mounts ); for( unsigned i = 0; i < Mounts.size(); ++i ) + { + if( Mounts[i].Type.CompareNoCase( "dir" ) ) + continue; // wrong type + if( Mounts[i].Root.CompareNoCase( pDevice->sOsMountDir ) ) + continue; // wrong root FILEMAN->Unmount( Mounts[i].Type, Mounts[i].Root, Mounts[i].MountPoint ); + } FILEMAN->Mount( "dir", pDevice->sOsMountDir, sMountPoint.c_str() ); LOG->Trace( "FILEMAN->Mount %s %s", pDevice->sOsMountDir.c_str(), sMountPoint.c_str() ); diff --git a/stepmania/src/arch/MemoryCard/MemoryCardDriver_Windows.cpp b/stepmania/src/arch/MemoryCard/MemoryCardDriver_Windows.cpp index c23ed3c619..fd6b5a43aa 100644 --- a/stepmania/src/arch/MemoryCard/MemoryCardDriver_Windows.cpp +++ b/stepmania/src/arch/MemoryCard/MemoryCardDriver_Windows.cpp @@ -87,7 +87,13 @@ bool MemoryCardDriver_Windows::MountAndTestWrite( UsbStorageDevice* pDevice, CSt vector Mounts; FILEMAN->GetLoadedDrivers( Mounts ); for( unsigned i = 0; i < Mounts.size(); ++i ) + { + if( Mounts[i].Type.CompareNoCase( "dir" ) ) + continue; // wrong type + if( Mounts[i].Root.CompareNoCase( pDevice->sOsMountDir ) ) + continue; // wrong root FILEMAN->Unmount( Mounts[i].Type, Mounts[i].Root, Mounts[i].MountPoint ); + } FILEMAN->Mount( "dir", pDevice->sOsMountDir, sMountPoint.c_str() ); LOG->Trace( "FILEMAN->Mount %s %s", pDevice->sOsMountDir.c_str(), sMountPoint.c_str() );