[Project64] Clean up SystemEvents.cpp
This commit is contained in:
parent
90560dd0da
commit
64a6cec068
|
@ -26,198 +26,198 @@ CSystemEvents::~CSystemEvents()
|
|||
|
||||
void CSystemEvents::QueueEvent(SystemEvent action)
|
||||
{
|
||||
CGuard Guard(m_CS);
|
||||
for (EventList::const_iterator iter = m_Events.begin(); iter != m_Events.end(); iter++)
|
||||
{
|
||||
if (*iter == action)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
m_Events.push_back(action);
|
||||
CGuard Guard(m_CS);
|
||||
for (EventList::const_iterator iter = m_Events.begin(); iter != m_Events.end(); iter++)
|
||||
{
|
||||
if (*iter == action)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
m_Events.push_back(action);
|
||||
m_bDoSomething = true;
|
||||
}
|
||||
|
||||
void CSystemEvents::ExecuteEvents()
|
||||
{
|
||||
EventList Events;
|
||||
{
|
||||
CGuard Guard(m_CS);
|
||||
EventList Events;
|
||||
{
|
||||
CGuard Guard(m_CS);
|
||||
|
||||
m_bDoSomething = false;
|
||||
if (m_Events.size() == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
m_bDoSomething = false;
|
||||
if (m_Events.size() == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Events = m_Events;
|
||||
m_Events.clear();
|
||||
}
|
||||
Events = m_Events;
|
||||
m_Events.clear();
|
||||
}
|
||||
|
||||
bool bPause = false, bLoadedSave = false;
|
||||
for (EventList::const_iterator iter = Events.begin(); !bLoadedSave && iter != Events.end(); iter++)
|
||||
{
|
||||
switch (*iter)
|
||||
{
|
||||
case SysEvent_CloseCPU:
|
||||
m_System->m_EndEmulation = true;
|
||||
break;
|
||||
case SysEvent_ResetCPU_Soft:
|
||||
m_System->GameReset();
|
||||
break;
|
||||
case SysEvent_ResetCPU_SoftDone:
|
||||
m_System->Reset(true, false);
|
||||
break;
|
||||
case SysEvent_ResetCPU_Hard:
|
||||
m_System->Reset(true, true);
|
||||
break;
|
||||
case SysEvent_Profile_GenerateLogs:
|
||||
m_System->m_Profile.GenerateLog();
|
||||
break;
|
||||
case SysEvent_Profile_StartStop:
|
||||
case SysEvent_Profile_ResetLogs:
|
||||
m_System->m_Profile.ResetCounters();
|
||||
break;
|
||||
case SysEvent_ExecuteInterrupt:
|
||||
g_Reg->DoIntrException(false);
|
||||
break;
|
||||
case SysEvent_Interrupt_SP:
|
||||
g_Reg->MI_INTR_REG |= MI_INTR_SP;
|
||||
g_Reg->DoIntrException(false);
|
||||
break;
|
||||
case SysEvent_Interrupt_SI:
|
||||
g_Reg->MI_INTR_REG |= MI_INTR_SI;
|
||||
g_Reg->DoIntrException(false);
|
||||
break;
|
||||
case SysEvent_Interrupt_AI:
|
||||
g_Reg->MI_INTR_REG |= MI_INTR_AI;
|
||||
g_Reg->DoIntrException(false);
|
||||
break;
|
||||
case SysEvent_Interrupt_VI:
|
||||
g_Reg->MI_INTR_REG |= MI_INTR_VI;
|
||||
g_Reg->DoIntrException(false);
|
||||
break;
|
||||
case SysEvent_Interrupt_PI:
|
||||
g_Reg->MI_INTR_REG |= MI_INTR_PI;
|
||||
g_Reg->DoIntrException(false);
|
||||
break;
|
||||
case SysEvent_Interrupt_DP:
|
||||
g_Reg->MI_INTR_REG |= MI_INTR_DP;
|
||||
g_Reg->DoIntrException(false);
|
||||
break;
|
||||
case SysEvent_SaveMachineState:
|
||||
if (!m_System->SaveState())
|
||||
{
|
||||
m_Events.push_back(SysEvent_SaveMachineState);
|
||||
m_bDoSomething = true;
|
||||
}
|
||||
break;
|
||||
case SysEvent_LoadMachineState:
|
||||
if (m_System->LoadState())
|
||||
{
|
||||
bLoadedSave = true;
|
||||
}
|
||||
break;
|
||||
case SysEvent_ChangePlugins:
|
||||
ChangePluginFunc();
|
||||
break;
|
||||
case SysEvent_ChangingFullScreen:
|
||||
g_Notify->ChangeFullScreen();
|
||||
break;
|
||||
case SysEvent_GSButtonPressed:
|
||||
if (m_System->HasCheatsSlectionChanged())
|
||||
{
|
||||
m_System->SetCheatsSlectionChanged(false);
|
||||
m_System->m_Cheats.LoadCheats(false, m_Plugins);
|
||||
}
|
||||
m_System->m_Cheats.ApplyGSButton(g_MMU);
|
||||
break;
|
||||
case SysEvent_PauseCPU_FromMenu:
|
||||
if (!g_Settings->LoadBool(GameRunning_CPU_Paused))
|
||||
{
|
||||
g_Settings->SaveBool(GameRunning_CPU_Paused, true);
|
||||
bPause = true;
|
||||
}
|
||||
g_Settings->SaveDword(GameRunning_CPU_PausedType, PauseType_FromMenu);
|
||||
break;
|
||||
case SysEvent_PauseCPU_AppLostFocus:
|
||||
if (!g_Settings->LoadBool(GameRunning_CPU_Paused))
|
||||
{
|
||||
g_Settings->SaveBool(GameRunning_CPU_Paused, true);
|
||||
g_Settings->SaveDword(GameRunning_CPU_PausedType, PauseType_AppLostFocus);
|
||||
bPause = true;
|
||||
}
|
||||
break;
|
||||
case SysEvent_PauseCPU_AppLostActive:
|
||||
if (!g_Settings->LoadBool(GameRunning_CPU_Paused))
|
||||
{
|
||||
g_Settings->SaveBool(GameRunning_CPU_Paused, true);
|
||||
g_Settings->SaveDword(GameRunning_CPU_PausedType, PauseType_AppLostActive);
|
||||
bPause = true;
|
||||
}
|
||||
break;
|
||||
case SysEvent_PauseCPU_SaveGame:
|
||||
if (!g_Settings->LoadBool(GameRunning_CPU_Paused))
|
||||
{
|
||||
g_Settings->SaveBool(GameRunning_CPU_Paused, true);
|
||||
g_Settings->SaveDword(GameRunning_CPU_PausedType, PauseType_SaveGame);
|
||||
bPause = true;
|
||||
}
|
||||
break;
|
||||
case SysEvent_PauseCPU_LoadGame:
|
||||
if (!g_Settings->LoadBool(GameRunning_CPU_Paused))
|
||||
{
|
||||
g_Settings->SaveBool(GameRunning_CPU_Paused, true);
|
||||
g_Settings->SaveDword(GameRunning_CPU_PausedType, PauseType_LoadGame);
|
||||
bPause = true;
|
||||
}
|
||||
break;
|
||||
case SysEvent_PauseCPU_DumpMemory:
|
||||
if (!g_Settings->LoadBool(GameRunning_CPU_Paused))
|
||||
{
|
||||
g_Settings->SaveBool(GameRunning_CPU_Paused, true);
|
||||
g_Settings->SaveDword(GameRunning_CPU_PausedType, PauseType_DumpMemory);
|
||||
bPause = true;
|
||||
}
|
||||
break;
|
||||
case SysEvent_PauseCPU_SearchMemory:
|
||||
if (!g_Settings->LoadBool(GameRunning_CPU_Paused))
|
||||
{
|
||||
g_Settings->SaveBool(GameRunning_CPU_Paused, true);
|
||||
g_Settings->SaveDword(GameRunning_CPU_PausedType, PauseType_SearchMemory);
|
||||
bPause = true;
|
||||
}
|
||||
break;
|
||||
case SysEvent_PauseCPU_Settings:
|
||||
if (!g_Settings->LoadBool(GameRunning_CPU_Paused))
|
||||
{
|
||||
g_Settings->SaveBool(GameRunning_CPU_Paused, true);
|
||||
g_Settings->SaveDword(GameRunning_CPU_PausedType, PauseType_Settings);
|
||||
bPause = true;
|
||||
}
|
||||
break;
|
||||
case SysEvent_PauseCPU_Cheats:
|
||||
if (!g_Settings->LoadBool(GameRunning_CPU_Paused))
|
||||
{
|
||||
g_Settings->SaveBool(GameRunning_CPU_Paused, true);
|
||||
g_Settings->SaveDword(GameRunning_CPU_PausedType, PauseType_Cheats);
|
||||
bPause = true;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
g_Notify->BreakPoint(__FILE__, __LINE__);
|
||||
break;
|
||||
}
|
||||
}
|
||||
bool bPause = false, bLoadedSave = false;
|
||||
for (EventList::const_iterator iter = Events.begin(); !bLoadedSave && iter != Events.end(); iter++)
|
||||
{
|
||||
switch (*iter)
|
||||
{
|
||||
case SysEvent_CloseCPU:
|
||||
m_System->m_EndEmulation = true;
|
||||
break;
|
||||
case SysEvent_ResetCPU_Soft:
|
||||
m_System->GameReset();
|
||||
break;
|
||||
case SysEvent_ResetCPU_SoftDone:
|
||||
m_System->Reset(true, false);
|
||||
break;
|
||||
case SysEvent_ResetCPU_Hard:
|
||||
m_System->Reset(true, true);
|
||||
break;
|
||||
case SysEvent_Profile_GenerateLogs:
|
||||
m_System->m_Profile.GenerateLog();
|
||||
break;
|
||||
case SysEvent_Profile_StartStop:
|
||||
case SysEvent_Profile_ResetLogs:
|
||||
m_System->m_Profile.ResetCounters();
|
||||
break;
|
||||
case SysEvent_ExecuteInterrupt:
|
||||
g_Reg->DoIntrException(false);
|
||||
break;
|
||||
case SysEvent_Interrupt_SP:
|
||||
g_Reg->MI_INTR_REG |= MI_INTR_SP;
|
||||
g_Reg->DoIntrException(false);
|
||||
break;
|
||||
case SysEvent_Interrupt_SI:
|
||||
g_Reg->MI_INTR_REG |= MI_INTR_SI;
|
||||
g_Reg->DoIntrException(false);
|
||||
break;
|
||||
case SysEvent_Interrupt_AI:
|
||||
g_Reg->MI_INTR_REG |= MI_INTR_AI;
|
||||
g_Reg->DoIntrException(false);
|
||||
break;
|
||||
case SysEvent_Interrupt_VI:
|
||||
g_Reg->MI_INTR_REG |= MI_INTR_VI;
|
||||
g_Reg->DoIntrException(false);
|
||||
break;
|
||||
case SysEvent_Interrupt_PI:
|
||||
g_Reg->MI_INTR_REG |= MI_INTR_PI;
|
||||
g_Reg->DoIntrException(false);
|
||||
break;
|
||||
case SysEvent_Interrupt_DP:
|
||||
g_Reg->MI_INTR_REG |= MI_INTR_DP;
|
||||
g_Reg->DoIntrException(false);
|
||||
break;
|
||||
case SysEvent_SaveMachineState:
|
||||
if (!m_System->SaveState())
|
||||
{
|
||||
m_Events.push_back(SysEvent_SaveMachineState);
|
||||
m_bDoSomething = true;
|
||||
}
|
||||
break;
|
||||
case SysEvent_LoadMachineState:
|
||||
if (m_System->LoadState())
|
||||
{
|
||||
bLoadedSave = true;
|
||||
}
|
||||
break;
|
||||
case SysEvent_ChangePlugins:
|
||||
ChangePluginFunc();
|
||||
break;
|
||||
case SysEvent_ChangingFullScreen:
|
||||
g_Notify->ChangeFullScreen();
|
||||
break;
|
||||
case SysEvent_GSButtonPressed:
|
||||
if (m_System->HasCheatsSlectionChanged())
|
||||
{
|
||||
m_System->SetCheatsSlectionChanged(false);
|
||||
m_System->m_Cheats.LoadCheats(false, m_Plugins);
|
||||
}
|
||||
m_System->m_Cheats.ApplyGSButton(g_MMU);
|
||||
break;
|
||||
case SysEvent_PauseCPU_FromMenu:
|
||||
if (!g_Settings->LoadBool(GameRunning_CPU_Paused))
|
||||
{
|
||||
g_Settings->SaveBool(GameRunning_CPU_Paused, true);
|
||||
bPause = true;
|
||||
}
|
||||
g_Settings->SaveDword(GameRunning_CPU_PausedType, PauseType_FromMenu);
|
||||
break;
|
||||
case SysEvent_PauseCPU_AppLostFocus:
|
||||
if (!g_Settings->LoadBool(GameRunning_CPU_Paused))
|
||||
{
|
||||
g_Settings->SaveBool(GameRunning_CPU_Paused, true);
|
||||
g_Settings->SaveDword(GameRunning_CPU_PausedType, PauseType_AppLostFocus);
|
||||
bPause = true;
|
||||
}
|
||||
break;
|
||||
case SysEvent_PauseCPU_AppLostActive:
|
||||
if (!g_Settings->LoadBool(GameRunning_CPU_Paused))
|
||||
{
|
||||
g_Settings->SaveBool(GameRunning_CPU_Paused, true);
|
||||
g_Settings->SaveDword(GameRunning_CPU_PausedType, PauseType_AppLostActive);
|
||||
bPause = true;
|
||||
}
|
||||
break;
|
||||
case SysEvent_PauseCPU_SaveGame:
|
||||
if (!g_Settings->LoadBool(GameRunning_CPU_Paused))
|
||||
{
|
||||
g_Settings->SaveBool(GameRunning_CPU_Paused, true);
|
||||
g_Settings->SaveDword(GameRunning_CPU_PausedType, PauseType_SaveGame);
|
||||
bPause = true;
|
||||
}
|
||||
break;
|
||||
case SysEvent_PauseCPU_LoadGame:
|
||||
if (!g_Settings->LoadBool(GameRunning_CPU_Paused))
|
||||
{
|
||||
g_Settings->SaveBool(GameRunning_CPU_Paused, true);
|
||||
g_Settings->SaveDword(GameRunning_CPU_PausedType, PauseType_LoadGame);
|
||||
bPause = true;
|
||||
}
|
||||
break;
|
||||
case SysEvent_PauseCPU_DumpMemory:
|
||||
if (!g_Settings->LoadBool(GameRunning_CPU_Paused))
|
||||
{
|
||||
g_Settings->SaveBool(GameRunning_CPU_Paused, true);
|
||||
g_Settings->SaveDword(GameRunning_CPU_PausedType, PauseType_DumpMemory);
|
||||
bPause = true;
|
||||
}
|
||||
break;
|
||||
case SysEvent_PauseCPU_SearchMemory:
|
||||
if (!g_Settings->LoadBool(GameRunning_CPU_Paused))
|
||||
{
|
||||
g_Settings->SaveBool(GameRunning_CPU_Paused, true);
|
||||
g_Settings->SaveDword(GameRunning_CPU_PausedType, PauseType_SearchMemory);
|
||||
bPause = true;
|
||||
}
|
||||
break;
|
||||
case SysEvent_PauseCPU_Settings:
|
||||
if (!g_Settings->LoadBool(GameRunning_CPU_Paused))
|
||||
{
|
||||
g_Settings->SaveBool(GameRunning_CPU_Paused, true);
|
||||
g_Settings->SaveDword(GameRunning_CPU_PausedType, PauseType_Settings);
|
||||
bPause = true;
|
||||
}
|
||||
break;
|
||||
case SysEvent_PauseCPU_Cheats:
|
||||
if (!g_Settings->LoadBool(GameRunning_CPU_Paused))
|
||||
{
|
||||
g_Settings->SaveBool(GameRunning_CPU_Paused, true);
|
||||
g_Settings->SaveDword(GameRunning_CPU_PausedType, PauseType_Cheats);
|
||||
bPause = true;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
g_Notify->BreakPoint(__FILE__, __LINE__);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (bPause)
|
||||
{
|
||||
m_System->Pause();
|
||||
}
|
||||
if (bPause)
|
||||
{
|
||||
m_System->Pause();
|
||||
}
|
||||
}
|
||||
|
||||
void CSystemEvents::ChangePluginFunc()
|
||||
{
|
||||
g_Notify->DisplayMessage(0, MSG_PLUGIN_INIT);
|
||||
m_System->PluginReset();
|
||||
}
|
||||
g_Notify->DisplayMessage(0, MSG_PLUGIN_INIT);
|
||||
m_System->PluginReset();
|
||||
}
|
|
@ -59,31 +59,31 @@ class CPlugins;
|
|||
|
||||
class CSystemEvents
|
||||
{
|
||||
typedef std::vector<SystemEvent> EventList;
|
||||
typedef std::vector<SystemEvent> EventList;
|
||||
|
||||
protected:
|
||||
CSystemEvents(CN64System * System, CPlugins * Plugins);
|
||||
virtual ~CSystemEvents();
|
||||
CSystemEvents(CN64System * System, CPlugins * Plugins);
|
||||
virtual ~CSystemEvents();
|
||||
|
||||
public:
|
||||
void ExecuteEvents();
|
||||
void QueueEvent(SystemEvent action);
|
||||
void ExecuteEvents();
|
||||
void QueueEvent(SystemEvent action);
|
||||
|
||||
const int32_t & DoSomething() const
|
||||
{
|
||||
return m_bDoSomething;
|
||||
}
|
||||
{
|
||||
return m_bDoSomething;
|
||||
}
|
||||
|
||||
private:
|
||||
CSystemEvents(); // Disable default constructor
|
||||
CSystemEvents(const CSystemEvents&); // Disable copy constructor
|
||||
CSystemEvents& operator=(const CSystemEvents&); // Disable assignment
|
||||
CSystemEvents(); // Disable default constructor
|
||||
CSystemEvents(const CSystemEvents&); // Disable copy constructor
|
||||
CSystemEvents& operator=(const CSystemEvents&); // Disable assignment
|
||||
|
||||
void ChangePluginFunc();
|
||||
void ChangePluginFunc();
|
||||
|
||||
CN64System * m_System;
|
||||
CPlugins * m_Plugins;
|
||||
EventList m_Events;
|
||||
CN64System * m_System;
|
||||
CPlugins * m_Plugins;
|
||||
EventList m_Events;
|
||||
int32_t m_bDoSomething;
|
||||
CriticalSection m_CS;
|
||||
CriticalSection m_CS;
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue