fix "SaveMachineStats fails because cards not mounted"
This commit is contained in:
@@ -217,13 +217,23 @@ void MemoryCardManager::LockCards( bool bLock )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if( !bWasLocked && bLock )
|
||||
m_pDriver->SetMountThreadState( MemoryCardDriver::detect_and_dont_mount );
|
||||
else
|
||||
m_pDriver->SetMountThreadState( MemoryCardDriver::detect_and_mount );
|
||||
}
|
||||
|
||||
void MemoryCardManager::MountAllCards()
|
||||
{
|
||||
FOREACH_PlayerNumber( p )
|
||||
{
|
||||
if( m_Device[p].IsBlank() ) // they don't have an assigned card
|
||||
continue;
|
||||
|
||||
m_pDriver->MountAndTestWrite(&m_Device[p], MEM_CARD_MOUNT_POINT[p]);
|
||||
}
|
||||
}
|
||||
|
||||
void MemoryCardManager::FlushAndReset()
|
||||
{
|
||||
FOREACH_PlayerNumber( p )
|
||||
|
||||
@@ -27,6 +27,7 @@ public:
|
||||
// CString GetOsMountDir( PlayerNumber pn ); // only valid when state = ready
|
||||
|
||||
void LockCards( bool bLock ); // prevent removing or changing of memory cards
|
||||
void MountAllCards();
|
||||
|
||||
void PauseMountingThread(); // call this before reading or writing to memory card
|
||||
void UnPauseMountingThread(); // call this when done reading or writing to memory card
|
||||
|
||||
+30
-32
@@ -653,41 +653,39 @@ bool Profile::SaveAllToDir( CString sDir, bool bSignData ) const
|
||||
SaveEditableDataToDir( sDir );
|
||||
|
||||
// Save stats.xml
|
||||
CString fn = sDir + STATS_XML;
|
||||
|
||||
XNode xml;
|
||||
xml.name = "Stats";
|
||||
xml.AppendChild( SaveGeneralDataCreateNode() );
|
||||
xml.AppendChild( SaveSongScoresCreateNode() );
|
||||
xml.AppendChild( SaveCourseScoresCreateNode() );
|
||||
xml.AppendChild( SaveCategoryScoresCreateNode() );
|
||||
xml.AppendChild( SaveScreenshotDataCreateNode() );
|
||||
xml.AppendChild( SaveCalorieDataCreateNode() );
|
||||
xml.AppendChild( SaveRecentSongScoresCreateNode() );
|
||||
xml.AppendChild( SaveRecentCourseScoresCreateNode() );
|
||||
if( IsMachine() )
|
||||
xml.AppendChild( SaveCoinDataCreateNode() );
|
||||
|
||||
DISP_OPT opts = optDefault;
|
||||
opts.stylesheet = STATS_XSL;
|
||||
bool bSaved = xml.SaveToFile(fn, &opts);
|
||||
|
||||
// Update file cache, or else IsAFile in CryptManager won't see this new file.
|
||||
FILEMAN->FlushDirCache( sDir );
|
||||
|
||||
if( bSaved && bSignData )
|
||||
{
|
||||
CString fn = sDir + STATS_XML;
|
||||
CString sStatsXmlSigFile = fn+SIGNATURE_APPEND;
|
||||
CryptManager::SignFileToFile(fn, sStatsXmlSigFile);
|
||||
|
||||
XNode xml;
|
||||
xml.name = "Stats";
|
||||
xml.AppendChild( SaveGeneralDataCreateNode() );
|
||||
xml.AppendChild( SaveSongScoresCreateNode() );
|
||||
xml.AppendChild( SaveCourseScoresCreateNode() );
|
||||
xml.AppendChild( SaveCategoryScoresCreateNode() );
|
||||
xml.AppendChild( SaveScreenshotDataCreateNode() );
|
||||
xml.AppendChild( SaveCalorieDataCreateNode() );
|
||||
xml.AppendChild( SaveRecentSongScoresCreateNode() );
|
||||
xml.AppendChild( SaveRecentCourseScoresCreateNode() );
|
||||
if( IsMachine() )
|
||||
xml.AppendChild( SaveCoinDataCreateNode() );
|
||||
|
||||
DISP_OPT opts = optDefault;
|
||||
opts.stylesheet = STATS_XSL;
|
||||
bool bSaved = xml.SaveToFile(fn, &opts);
|
||||
|
||||
// Update file cache, or else IsAFile in CryptManager won't see this new file.
|
||||
// Update file cache, or else IsAFile in CryptManager won't see sStatsXmlSigFile.
|
||||
FILEMAN->FlushDirCache( sDir );
|
||||
|
||||
if( bSaved && bSignData )
|
||||
{
|
||||
CString sStatsXmlSigFile = fn+SIGNATURE_APPEND;
|
||||
CryptManager::SignFileToFile(fn, sStatsXmlSigFile);
|
||||
|
||||
// Update file cache, or else IsAFile in CryptManager won't see sStatsXmlSigFile.
|
||||
FILEMAN->FlushDirCache( sDir );
|
||||
|
||||
// Save the "don't share" file
|
||||
CString sDontShareFile = sDir + DONT_SHARE_SIG;
|
||||
CryptManager::SignFileToFile(sStatsXmlSigFile, sDontShareFile);
|
||||
}
|
||||
// Save the "don't share" file
|
||||
CString sDontShareFile = sDir + DONT_SHARE_SIG;
|
||||
CryptManager::SignFileToFile(sStatsXmlSigFile, sDontShareFile);
|
||||
}
|
||||
|
||||
SaveStatsWebPageToDir( sDir );
|
||||
@@ -696,7 +694,7 @@ bool Profile::SaveAllToDir( CString sDir, bool bSignData ) const
|
||||
FILEMAN->CreateDir( sDir + EDITS_SUBDIR );
|
||||
FILEMAN->CreateDir( sDir + SCREENSHOTS_SUBDIR );
|
||||
|
||||
return true;
|
||||
return bSaved;
|
||||
}
|
||||
|
||||
void Profile::SaveEditableDataToDir( CString sDir ) const
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
|
||||
static void SaveMachineStatsToFirstMemCard()
|
||||
{
|
||||
MEMCARDMAN->MountAllCards();
|
||||
|
||||
FOREACH_PlayerNumber( pn )
|
||||
{
|
||||
if( MEMCARDMAN->GetCardState(pn) != MEMORY_CARD_STATE_READY )
|
||||
@@ -19,9 +21,11 @@ static void SaveMachineStatsToFirstMemCard()
|
||||
sDir += "MachineProfile/";
|
||||
|
||||
|
||||
PROFILEMAN->GetMachineProfile()->SaveAllToDir( sDir, PREFSMAN->m_bSignProfileData );
|
||||
|
||||
SCREENMAN->SystemMessage( ssprintf("Machine stats saved to P%d card.",pn+1) );
|
||||
bool bSaved = PROFILEMAN->GetMachineProfile()->SaveAllToDir( sDir, PREFSMAN->m_bSignProfileData );
|
||||
if( bSaved )
|
||||
SCREENMAN->SystemMessage( ssprintf("Machine stats saved to P%d card.",pn+1) );
|
||||
else
|
||||
SCREENMAN->SystemMessage( ssprintf("Error saving stats to P%d card.",pn+1) );
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user