Simplify logic around CConfigNeedingRestart (PR #955)
This commit is contained in:
parent
992a79075b
commit
830030ee05
3 changed files with 32 additions and 27 deletions
|
@ -11,19 +11,39 @@
|
|||
class CConfigNeedingRestart
|
||||
{
|
||||
public:
|
||||
CConfigNeedingRestart(UINT bEnableTheFreezesF8Rom = false) :
|
||||
m_Apple2Type( GetApple2Type() ),
|
||||
m_CpuType( GetMainCpu() ),
|
||||
m_uSaveLoadStateMsg(0),
|
||||
m_videoRefreshRate( GetVideo().GetVideoRefreshRate() )
|
||||
// zero initialise
|
||||
CConfigNeedingRestart()
|
||||
{
|
||||
m_bEnableTheFreezesF8Rom = bEnableTheFreezesF8Rom;
|
||||
m_Apple2Type = A2TYPE_APPLE2;
|
||||
m_CpuType = CPU_UNKNOWN;
|
||||
memset(m_Slot, 0, sizeof(m_Slot));
|
||||
m_SlotAux = CT_Empty;
|
||||
m_bEnableTheFreezesF8Rom = 0;
|
||||
m_uSaveLoadStateMsg = 0;
|
||||
m_videoRefreshRate = VR_NONE;
|
||||
}
|
||||
|
||||
// create from current global configuration
|
||||
static CConfigNeedingRestart Create()
|
||||
{
|
||||
CConfigNeedingRestart config;
|
||||
config.Reload();
|
||||
return config;
|
||||
}
|
||||
|
||||
// update from current global configuration
|
||||
void Reload()
|
||||
{
|
||||
m_Apple2Type = GetApple2Type();
|
||||
m_CpuType = GetMainCpu();
|
||||
CardManager& cardManager = GetCardMgr();
|
||||
for (UINT slot = SLOT0; slot < NUM_SLOTS; slot++)
|
||||
m_Slot[slot] = GetCardMgr().QuerySlot(slot);
|
||||
m_SlotAux = GetCardMgr().QueryAux();
|
||||
|
||||
m_Slot[slot] = cardManager.QuerySlot(slot);
|
||||
m_SlotAux = cardManager.QueryAux();
|
||||
m_tfeInterface = get_tfe_interface();
|
||||
m_bEnableTheFreezesF8Rom = GetPropertySheet().GetTheFreezesF8Rom();
|
||||
m_uSaveLoadStateMsg = 0;
|
||||
m_videoRefreshRate = GetVideo().GetVideoRefreshRate();
|
||||
}
|
||||
|
||||
const CConfigNeedingRestart& operator= (const CConfigNeedingRestart& other)
|
||||
|
|
|
@ -376,19 +376,9 @@ void CPropertySheetHelper::ApplyNewConfig(void)
|
|||
void CPropertySheetHelper::SaveCurrentConfig(void)
|
||||
{
|
||||
// NB. clone-type is encoded in g_Apple2Type
|
||||
m_ConfigOld.m_Apple2Type = GetApple2Type();
|
||||
m_ConfigOld.m_CpuType = GetMainCpu();
|
||||
m_ConfigOld.m_Slot[SLOT3] = GetCardMgr().QuerySlot(SLOT3);
|
||||
m_ConfigOld.m_Slot[SLOT4] = GetCardMgr().QuerySlot(SLOT4);
|
||||
m_ConfigOld.m_Slot[SLOT5] = GetCardMgr().QuerySlot(SLOT5);
|
||||
m_ConfigOld.m_Slot[SLOT6] = GetCardMgr().QuerySlot(SLOT6); // CPageDisk::HandleFloppyDriveCombo() needs this to be CT_Disk2 (temp, as will replace with PR #955)
|
||||
m_ConfigOld.m_Slot[SLOT7] = GetCardMgr().QuerySlot(SLOT7);
|
||||
m_ConfigOld.m_bEnableTheFreezesF8Rom = GetPropertySheet().GetTheFreezesF8Rom();
|
||||
m_ConfigOld.m_videoRefreshRate = GetVideo().GetVideoRefreshRate();
|
||||
m_ConfigOld.m_tfeInterface = get_tfe_interface();
|
||||
m_ConfigOld.Reload();
|
||||
|
||||
// Reset flags each time:
|
||||
m_ConfigOld.m_uSaveLoadStateMsg = 0;
|
||||
m_bDoBenchmark = false;
|
||||
|
||||
// Setup ConfigNew
|
||||
|
@ -405,7 +395,6 @@ void CPropertySheetHelper::RestoreCurrentConfig(void)
|
|||
SetSlot(SLOT5, m_ConfigOld.m_Slot[SLOT5]);
|
||||
HD_SetEnabled(m_ConfigOld.m_Slot[SLOT7] == CT_GenericHDD);
|
||||
GetPropertySheet().SetTheFreezesF8Rom(m_ConfigOld.m_bEnableTheFreezesF8Rom);
|
||||
m_ConfigNew.m_videoRefreshRate = m_ConfigOld.m_videoRefreshRate; // Not SetVideoRefreshRate(), as this re-inits much Video/NTSC state!
|
||||
}
|
||||
|
||||
bool CPropertySheetHelper::IsOkToSaveLoadState(HWND hWnd, const bool bConfigChanged)
|
||||
|
|
|
@ -172,8 +172,6 @@ void Snapshot_UpdatePath(void)
|
|||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
static CConfigNeedingRestart m_ConfigNew;
|
||||
|
||||
static std::string GetSnapshotUnitApple2Name(void)
|
||||
{
|
||||
static const std::string name("Apple2");
|
||||
|
@ -279,16 +277,13 @@ static void ParseUnitApple2(YamlLoadHelper& yamlLoadHelper, UINT version)
|
|||
|
||||
std::string model = yamlLoadHelper.LoadString(SS_YAML_KEY_MODEL);
|
||||
SetApple2Type( ParseApple2Type(model) ); // NB. Sets default main CPU type
|
||||
m_ConfigNew.m_Apple2Type = GetApple2Type();
|
||||
|
||||
CpuLoadSnapshot(yamlLoadHelper, version); // NB. Overrides default main CPU type
|
||||
m_ConfigNew.m_CpuType = GetMainCpu();
|
||||
|
||||
JoyLoadSnapshot(yamlLoadHelper, version);
|
||||
KeybLoadSnapshot(yamlLoadHelper, version);
|
||||
SpkrLoadSnapshot(yamlLoadHelper);
|
||||
GetVideo().VideoLoadSnapshot(yamlLoadHelper, version);
|
||||
m_ConfigNew.m_videoRefreshRate = GetVideo().GetVideoRefreshRate();
|
||||
MemLoadSnapshot(yamlLoadHelper, version);
|
||||
|
||||
// g_Apple2Type may've changed: so redraw frame (title, buttons, leds, etc)
|
||||
|
@ -529,7 +524,8 @@ static void Snapshot_LoadState_v2(void)
|
|||
// . A change in h/w via loading a save-state avoids this VM restart
|
||||
// The latter is the desired approach (as the former needs a "power-on" / F2 to start things again)
|
||||
|
||||
GetPropertySheet().ApplyNewConfigFromSnapshot(m_ConfigNew); // Saves new state to Registry (not slot/cards though)
|
||||
const CConfigNeedingRestart configNew = CConfigNeedingRestart::Create();
|
||||
GetPropertySheet().ApplyNewConfigFromSnapshot(configNew); // Saves new state to Registry (not slot/cards though)
|
||||
|
||||
MemInitializeROM();
|
||||
MemInitializeCustomROM();
|
||||
|
|
Loading…
Add table
Reference in a new issue