diff --git a/stepmania/src/MemoryCardManager.cpp b/stepmania/src/MemoryCardManager.cpp index eb5f7f43dd..3461589287 100644 --- a/stepmania/src/MemoryCardManager.cpp +++ b/stepmania/src/MemoryCardManager.cpp @@ -66,7 +66,7 @@ void MemoryCardManager::Update( float fDelta ) const UsbStorageDevice &old = vOld[i]; if( find(vNew.begin(),vNew.end(),old) == vNew.end() ) // didn't find { - LOG->Trace( ssprintf("Disconnected bus %d port %d device %d path %s", old.iBus, old.iPortOnHub, old.iDeviceOnBus, old.sOsMountDir.c_str()) ); + LOG->Trace( ssprintf("Disconnected bus %d port %d device %d path %s", old.iBus, old.iPort, old.iLevel, old.sOsMountDir.c_str()) ); vDisconnects.push_back( old ); } } @@ -79,7 +79,7 @@ void MemoryCardManager::Update( float fDelta ) const UsbStorageDevice &newd = vNew[i]; if( find(vOld.begin(),vOld.end(),newd) == vOld.end() ) // didn't find { - LOG->Trace( ssprintf("Connected bus %d port %d device %d path %s", newd.iBus, newd.iPortOnHub, newd.iDeviceOnBus, newd.sOsMountDir.c_str()) ); + LOG->Trace( ssprintf("Connected bus %d port %d device %d path %s", newd.iBus, newd.iPort, newd.iLevel, newd.sOsMountDir.c_str()) ); vConnects.push_back( newd ); } } @@ -203,8 +203,8 @@ void MemoryCardManager::AssignUnassignedCards() UsbStorageDevice &usbd = vUnassignedDevices[i]; if( usbd.sOsMountDir.CompareNoCase(PREFSMAN->m_sMemoryCardOsMountPoint[p]) == 0 ) // match { - LOG->Trace( "dir match: iUsbStorageIndex: %d, iBus: %d, iDeviceOnBus: %d, iPortOnHub: %d", - usbd.iUsbStorageIndex, usbd.iBus, usbd.iDeviceOnBus, usbd.iPortOnHub ); + LOG->Trace( "dir match: iUsbStorageIndex: %d, iBus: %d, iLevel: %d, iPort: %d", + usbd.iUsbStorageIndex, usbd.iBus, usbd.iLevel, usbd.iPort ); goto match; } } @@ -220,11 +220,15 @@ void MemoryCardManager::AssignUnassignedCards() continue; // not a match if( PREFSMAN->m_iMemoryCardUsbPort[p] != -1 && - PREFSMAN->m_iMemoryCardUsbPort[p] != usbd.iPortOnHub ) + PREFSMAN->m_iMemoryCardUsbPort[p] != usbd.iPort ) continue; // not a match - LOG->Trace( "bus/port match: iUsbStorageIndex: %d, iBus: %d, iDeviceOnBus: %d, iPortOnHub: %d", - usbd.iUsbStorageIndex, usbd.iBus, usbd.iDeviceOnBus, usbd.iPortOnHub ); + if( PREFSMAN->m_iMemoryCardUsbLevel[p] != -1 && + PREFSMAN->m_iMemoryCardUsbLevel[p] != usbd.iLevel ) + continue; // not a match + + LOG->Trace( "bus/port match: iUsbStorageIndex: %d, iBus: %d, iLevel: %d, iPort: %d", + usbd.iUsbStorageIndex, usbd.iBus, usbd.iLevel, usbd.iPort ); goto match; } diff --git a/stepmania/src/PrefsManager.cpp b/stepmania/src/PrefsManager.cpp index 8c748aad70..d7dcef5a18 100644 --- a/stepmania/src/PrefsManager.cpp +++ b/stepmania/src/PrefsManager.cpp @@ -279,6 +279,7 @@ PrefsManager::PrefsManager() { m_iMemoryCardUsbBus[p] = -1; m_iMemoryCardUsbPort[p] = -1; + m_iMemoryCardUsbLevel[p] = -1; } m_sMemoryCardProfileSubdir = PRODUCT_NAME; @@ -490,6 +491,7 @@ void PrefsManager::ReadGlobalPrefsFromDisk() FixSlashesInPlace( m_sMemoryCardOsMountPoint[p] ); ini.GetValue( "Options", ssprintf("MemoryCardUsbBusP%d",p+1), m_iMemoryCardUsbBus[p] ); ini.GetValue( "Options", ssprintf("MemoryCardUsbPortP%d",p+1), m_iMemoryCardUsbPort[p] ); + ini.GetValue( "Options", ssprintf("MemoryCardUsbLevelP%d",p+1), m_iMemoryCardUsbLevel[p] ); } ini.GetValue( "Options", "CenterImageTranslateX", m_iCenterImageTranslateX ); @@ -707,6 +709,7 @@ void PrefsManager::SaveGlobalPrefsToDisk() const ini.SetValue( "Options", ssprintf("MemoryCardOsMountPointP%d",p+1), m_sMemoryCardOsMountPoint[p] ); ini.SetValue( "Options", ssprintf("MemoryCardUsbBusP%d",p+1), m_iMemoryCardUsbBus[p] ); ini.SetValue( "Options", ssprintf("MemoryCardUsbPortP%d",p+1), m_iMemoryCardUsbPort[p] ); + ini.SetValue( "Options", ssprintf("MemoryCardUsbLevelP%d",p+1), m_iMemoryCardUsbLevel[p] ); } ini.SetValue( "Options", "CenterImageTranslateX", m_iCenterImageTranslateX ); diff --git a/stepmania/src/PrefsManager.h b/stepmania/src/PrefsManager.h index 8ee9fcd826..df7cf2aba0 100644 --- a/stepmania/src/PrefsManager.h +++ b/stepmania/src/PrefsManager.h @@ -181,8 +181,9 @@ public: CString m_sMemoryCardProfileSubdir; // the directory on a memory card to look in for a profile CString m_sDefaultLocalProfileID[NUM_PLAYERS]; CString m_sMemoryCardOsMountPoint[NUM_PLAYERS]; // if set, always use the device that mounts to this point - int m_iMemoryCardUsbBus[NUM_PLAYERS]; // take the first storage device on this usb bus - int m_iMemoryCardUsbPort[NUM_PLAYERS]; // take the first storage device on this usb bus + int m_iMemoryCardUsbBus[NUM_PLAYERS]; // look for this bus when assigning cards. -1 = match any + int m_iMemoryCardUsbPort[NUM_PLAYERS]; // look for this port when assigning cards. -1 = match any + int m_iMemoryCardUsbLevel[NUM_PLAYERS]; // look for this level when assigning cards. -1 = match any int m_iCenterImageTranslateX; int m_iCenterImageTranslateY; float m_fCenterImageScaleX;