fix "memory card not mounted if initially plugged in while cards are locked"

do the final memory card mount on PlayersFinalized
This commit is contained in:
Chris Danford
2004-08-14 19:18:56 +00:00
parent 1fe0f5b783
commit ee9fbb99e1
3 changed files with 22 additions and 27 deletions
+3 -1
View File
@@ -40,6 +40,7 @@ GameState* GAMESTATE = NULL; // global and accessable from anywhere in our progr
GameState::GameState()
{
m_pPosition = NULL;
m_pCurStyle = NULL;
m_pCurGame = NULL;
m_iCoins = 0;
@@ -243,7 +244,6 @@ void GameState::PlayersFinalized()
m_bPlayersFinalized = true;
MEMCARDMAN->LockCards( true );
SONGMAN->LoadAllFromProfiles();
// apply saved default modifiers if any
@@ -274,6 +274,8 @@ void GameState::PlayersFinalized()
m_pPreferredCourse = pProfile->m_lastCourse.ToCourse();
}
SONGMAN->LoadAllFromProfiles();
FOREACH_PlayerNumber( pn )
{
if( !IsHumanPlayer(pn) )
+19 -24
View File
@@ -112,24 +112,9 @@ MemoryCardState MemoryCardManager::GetCardState( PlayerNumber pn )
return MEMORY_CARD_STATE_READY;
}
/*
CString MemoryCardManager::GetOsMountDir( PlayerNumber pn )
{
if( m_Device[pn].IsBlank() )
return "";
else
{
CString sDir = m_Device[pn].sOsMountDir;
FixSlashesInPlace( sDir );
if( !sDir.empty() && sDir.Right(1)!="/" )
sDir += '/';
return sDir;
}
}
*/
void MemoryCardManager::LockCards( bool bLock )
{
bool bWasLocked = m_bCardsLocked;
m_bCardsLocked = bLock;
if( !bLock )
@@ -139,7 +124,24 @@ void MemoryCardManager::LockCards( bool bLock )
m_bTooLate[p] = false;
}
if( m_bCardsLocked )
if( !bWasLocked && bLock )
{
LOG->Trace( "do the final mount" );
FOREACH_EnabledPlayer( p )
{
if( m_Device[p].IsBlank() ) // they don't have an assigned card
continue;
if( !m_pDriver->MountAndTestWrite(&m_Device[p], MEM_CARD_MOUNT_POINT[p]) )
{
m_bWriteError[p] = true;
}
}
}
if( !bWasLocked && bLock )
m_pDriver->SetMountThreadState( MemoryCardDriver::detect_and_dont_mount );
else
m_pDriver->SetMountThreadState( MemoryCardDriver::detect_and_mount );
@@ -231,13 +233,6 @@ match:
vUnassignedDevices.erase( vUnassignedDevices.begin()+i ); // remove the device so we don't match it for another player
m_bTooLate[p] = m_bCardsLocked;
m_bWriteError[p] = false;
if( !m_bCardsLocked )
{
if( !m_pDriver->MountAndTestWrite(&m_Device[p], MEM_CARD_MOUNT_POINT[p]) )
{
m_bWriteError[p] = true;
}
}
if( !m_bDontPlaySoundsOnce )
{
-2
View File
@@ -1121,8 +1121,6 @@ void SongManager::LoadAllFromProfiles()
{
CString sEditsDir = sProfileDir+"Edits/";
FILEMAN->FlushDirCache( sEditsDir );
CStringArray asEditsFilesWithPath;
GetDirListing( sEditsDir+"*.sm", asEditsFilesWithPath, false, true );