fix "SaveMachineStats fails because cards not mounted"

This commit is contained in:
Chris Danford
2004-08-22 07:19:38 +00:00
parent 02893160ce
commit 8471f5c7bc
4 changed files with 49 additions and 36 deletions
+11 -1
View File
@@ -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 )
+1
View File
@@ -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
View File
@@ -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
+7 -3
View File
@@ -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;
}