mirror of
				https://github.com/AppleWin/AppleWin.git
				synced 2025-10-31 06:16:14 +00:00 
			
		
		
		
	Simplify logic around CConfigNeedingRestart (PR #955)
This commit is contained in:
		| @@ -11,19 +11,39 @@ | |||||||
| class CConfigNeedingRestart | class CConfigNeedingRestart | ||||||
| { | { | ||||||
| public: | public: | ||||||
| 	CConfigNeedingRestart(UINT bEnableTheFreezesF8Rom = false) : | 	// zero initialise | ||||||
| 		m_Apple2Type( GetApple2Type() ), | 	CConfigNeedingRestart() | ||||||
| 		m_CpuType( GetMainCpu() ), |  | ||||||
| 		m_uSaveLoadStateMsg(0), |  | ||||||
| 		m_videoRefreshRate( GetVideo().GetVideoRefreshRate() ) |  | ||||||
| 	{ | 	{ | ||||||
| 		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++) | 		for (UINT slot = SLOT0; slot < NUM_SLOTS; slot++) | ||||||
| 			m_Slot[slot] = GetCardMgr().QuerySlot(slot); | 			m_Slot[slot] = cardManager.QuerySlot(slot); | ||||||
| 		m_SlotAux = GetCardMgr().QueryAux(); | 		m_SlotAux = cardManager.QueryAux(); | ||||||
|  |  | ||||||
| 		m_tfeInterface = get_tfe_interface(); | 		m_tfeInterface = get_tfe_interface(); | ||||||
|  | 		m_bEnableTheFreezesF8Rom = GetPropertySheet().GetTheFreezesF8Rom(); | ||||||
|  | 		m_uSaveLoadStateMsg = 0; | ||||||
|  | 		m_videoRefreshRate = GetVideo().GetVideoRefreshRate(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	const CConfigNeedingRestart& operator= (const CConfigNeedingRestart& other) | 	const CConfigNeedingRestart& operator= (const CConfigNeedingRestart& other) | ||||||
|   | |||||||
| @@ -376,19 +376,9 @@ void CPropertySheetHelper::ApplyNewConfig(void) | |||||||
| void CPropertySheetHelper::SaveCurrentConfig(void) | void CPropertySheetHelper::SaveCurrentConfig(void) | ||||||
| { | { | ||||||
| 	// NB. clone-type is encoded in g_Apple2Type | 	// NB. clone-type is encoded in g_Apple2Type | ||||||
| 	m_ConfigOld.m_Apple2Type = GetApple2Type(); | 	m_ConfigOld.Reload(); | ||||||
| 	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(); |  | ||||||
|  |  | ||||||
| 	// Reset flags each time: | 	// Reset flags each time: | ||||||
| 	m_ConfigOld.m_uSaveLoadStateMsg = 0; |  | ||||||
| 	m_bDoBenchmark = false; | 	m_bDoBenchmark = false; | ||||||
|  |  | ||||||
| 	// Setup ConfigNew | 	// Setup ConfigNew | ||||||
| @@ -405,7 +395,6 @@ void CPropertySheetHelper::RestoreCurrentConfig(void) | |||||||
| 	SetSlot(SLOT5, m_ConfigOld.m_Slot[SLOT5]); | 	SetSlot(SLOT5, m_ConfigOld.m_Slot[SLOT5]); | ||||||
| 	HD_SetEnabled(m_ConfigOld.m_Slot[SLOT7] == CT_GenericHDD); | 	HD_SetEnabled(m_ConfigOld.m_Slot[SLOT7] == CT_GenericHDD); | ||||||
| 	GetPropertySheet().SetTheFreezesF8Rom(m_ConfigOld.m_bEnableTheFreezesF8Rom); | 	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) | 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 std::string GetSnapshotUnitApple2Name(void) | ||||||
| { | { | ||||||
| 	static const std::string name("Apple2"); | 	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); | 	std::string model = yamlLoadHelper.LoadString(SS_YAML_KEY_MODEL); | ||||||
| 	SetApple2Type( ParseApple2Type(model) );	// NB. Sets default main CPU type | 	SetApple2Type( ParseApple2Type(model) );	// NB. Sets default main CPU type | ||||||
| 	m_ConfigNew.m_Apple2Type = GetApple2Type(); |  | ||||||
|  |  | ||||||
| 	CpuLoadSnapshot(yamlLoadHelper, version);	// NB. Overrides default main CPU type | 	CpuLoadSnapshot(yamlLoadHelper, version);	// NB. Overrides default main CPU type | ||||||
| 	m_ConfigNew.m_CpuType = GetMainCpu(); |  | ||||||
|  |  | ||||||
| 	JoyLoadSnapshot(yamlLoadHelper, version); | 	JoyLoadSnapshot(yamlLoadHelper, version); | ||||||
| 	KeybLoadSnapshot(yamlLoadHelper, version); | 	KeybLoadSnapshot(yamlLoadHelper, version); | ||||||
| 	SpkrLoadSnapshot(yamlLoadHelper); | 	SpkrLoadSnapshot(yamlLoadHelper); | ||||||
| 	GetVideo().VideoLoadSnapshot(yamlLoadHelper, version); | 	GetVideo().VideoLoadSnapshot(yamlLoadHelper, version); | ||||||
| 	m_ConfigNew.m_videoRefreshRate = GetVideo().GetVideoRefreshRate(); |  | ||||||
| 	MemLoadSnapshot(yamlLoadHelper, version); | 	MemLoadSnapshot(yamlLoadHelper, version); | ||||||
|  |  | ||||||
| 	// g_Apple2Type may've changed: so redraw frame (title, buttons, leds, etc) | 	// 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 | 		// . 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) | 		// 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(); | 		MemInitializeROM(); | ||||||
| 		MemInitializeCustomROM(); | 		MemInitializeCustomROM(); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user