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:
@@ -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) )
|
||||
|
||||
@@ -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 )
|
||||
{
|
||||
|
||||
@@ -1121,8 +1121,6 @@ void SongManager::LoadAllFromProfiles()
|
||||
{
|
||||
CString sEditsDir = sProfileDir+"Edits/";
|
||||
|
||||
FILEMAN->FlushDirCache( sEditsDir );
|
||||
|
||||
CStringArray asEditsFilesWithPath;
|
||||
GetDirListing( sEditsDir+"*.sm", asEditsFilesWithPath, false, true );
|
||||
|
||||
|
||||
Reference in New Issue
Block a user