fix "SaveMachineStats fails because cards not mounted"
This commit is contained in:
@@ -217,13 +217,23 @@ void MemoryCardManager::LockCards( bool bLock )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if( !bWasLocked && bLock )
|
if( !bWasLocked && bLock )
|
||||||
m_pDriver->SetMountThreadState( MemoryCardDriver::detect_and_dont_mount );
|
m_pDriver->SetMountThreadState( MemoryCardDriver::detect_and_dont_mount );
|
||||||
else
|
else
|
||||||
m_pDriver->SetMountThreadState( MemoryCardDriver::detect_and_mount );
|
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()
|
void MemoryCardManager::FlushAndReset()
|
||||||
{
|
{
|
||||||
FOREACH_PlayerNumber( p )
|
FOREACH_PlayerNumber( p )
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ public:
|
|||||||
// CString GetOsMountDir( PlayerNumber pn ); // only valid when state = ready
|
// CString GetOsMountDir( PlayerNumber pn ); // only valid when state = ready
|
||||||
|
|
||||||
void LockCards( bool bLock ); // prevent removing or changing of memory cards
|
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 PauseMountingThread(); // call this before reading or writing to memory card
|
||||||
void UnPauseMountingThread(); // call this when done 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 );
|
SaveEditableDataToDir( sDir );
|
||||||
|
|
||||||
// Save stats.xml
|
// 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;
|
// Update file cache, or else IsAFile in CryptManager won't see sStatsXmlSigFile.
|
||||||
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 );
|
FILEMAN->FlushDirCache( sDir );
|
||||||
|
|
||||||
if( bSaved && bSignData )
|
// Save the "don't share" file
|
||||||
{
|
CString sDontShareFile = sDir + DONT_SHARE_SIG;
|
||||||
CString sStatsXmlSigFile = fn+SIGNATURE_APPEND;
|
CryptManager::SignFileToFile(sStatsXmlSigFile, sDontShareFile);
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SaveStatsWebPageToDir( sDir );
|
SaveStatsWebPageToDir( sDir );
|
||||||
@@ -696,7 +694,7 @@ bool Profile::SaveAllToDir( CString sDir, bool bSignData ) const
|
|||||||
FILEMAN->CreateDir( sDir + EDITS_SUBDIR );
|
FILEMAN->CreateDir( sDir + EDITS_SUBDIR );
|
||||||
FILEMAN->CreateDir( sDir + SCREENSHOTS_SUBDIR );
|
FILEMAN->CreateDir( sDir + SCREENSHOTS_SUBDIR );
|
||||||
|
|
||||||
return true;
|
return bSaved;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Profile::SaveEditableDataToDir( CString sDir ) const
|
void Profile::SaveEditableDataToDir( CString sDir ) const
|
||||||
|
|||||||
@@ -10,6 +10,8 @@
|
|||||||
|
|
||||||
static void SaveMachineStatsToFirstMemCard()
|
static void SaveMachineStatsToFirstMemCard()
|
||||||
{
|
{
|
||||||
|
MEMCARDMAN->MountAllCards();
|
||||||
|
|
||||||
FOREACH_PlayerNumber( pn )
|
FOREACH_PlayerNumber( pn )
|
||||||
{
|
{
|
||||||
if( MEMCARDMAN->GetCardState(pn) != MEMORY_CARD_STATE_READY )
|
if( MEMCARDMAN->GetCardState(pn) != MEMORY_CARD_STATE_READY )
|
||||||
@@ -19,9 +21,11 @@ static void SaveMachineStatsToFirstMemCard()
|
|||||||
sDir += "MachineProfile/";
|
sDir += "MachineProfile/";
|
||||||
|
|
||||||
|
|
||||||
PROFILEMAN->GetMachineProfile()->SaveAllToDir( sDir, PREFSMAN->m_bSignProfileData );
|
bool bSaved = PROFILEMAN->GetMachineProfile()->SaveAllToDir( sDir, PREFSMAN->m_bSignProfileData );
|
||||||
|
if( bSaved )
|
||||||
SCREENMAN->SystemMessage( ssprintf("Machine stats saved to P%d card.",pn+1) );
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user