Merge pull request #7003 from lioncash/host
Common: Move host communication enum to Host.h
This commit is contained in:
commit
f05eb10026
|
@ -87,13 +87,13 @@ void Host_RefreshDSPDebuggerWindow()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void Host_Message(int Id)
|
void Host_Message(HostMessageID id)
|
||||||
{
|
{
|
||||||
if (Id == WM_USER_JOB_DISPATCH)
|
if (id == HostMessageID::WMUserJobDispatch)
|
||||||
{
|
{
|
||||||
s_update_main_frame_event.Set();
|
s_update_main_frame_event.Set();
|
||||||
}
|
}
|
||||||
else if (Id == WM_USER_STOP)
|
else if (id == HostMessageID::WMUserStop)
|
||||||
{
|
{
|
||||||
s_have_wm_user_stop = true;
|
s_have_wm_user_stop = true;
|
||||||
if (Core::IsRunning())
|
if (Core::IsRunning())
|
||||||
|
|
|
@ -57,13 +57,3 @@ struct CrtDebugBreak
|
||||||
// Dummy macro for marking translatable strings that can not be immediately translated.
|
// Dummy macro for marking translatable strings that can not be immediately translated.
|
||||||
// wxWidgets does not have a true dummy macro for this.
|
// wxWidgets does not have a true dummy macro for this.
|
||||||
#define _trans(a) a
|
#define _trans(a) a
|
||||||
|
|
||||||
// Host communication.
|
|
||||||
enum HOST_COMM
|
|
||||||
{
|
|
||||||
// Begin at 10 in case there is already messages with wParam = 0, 1, 2 and so on
|
|
||||||
WM_USER_STOP = 10,
|
|
||||||
WM_USER_CREATE,
|
|
||||||
WM_USER_SETCURSOR,
|
|
||||||
WM_USER_JOB_DISPATCH,
|
|
||||||
};
|
|
||||||
|
|
|
@ -291,7 +291,7 @@ static void CPUSetInitialExecutionState()
|
||||||
SetState(SConfig::GetInstance().bBootToPause ? State::Paused : State::Running);
|
SetState(SConfig::GetInstance().bBootToPause ? State::Paused : State::Running);
|
||||||
Host_UpdateDisasmDialog();
|
Host_UpdateDisasmDialog();
|
||||||
Host_UpdateMainFrame();
|
Host_UpdateMainFrame();
|
||||||
Host_Message(WM_USER_CREATE);
|
Host_Message(HostMessageID::WMUserCreate);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -924,7 +924,7 @@ void QueueHostJob(std::function<void()> job, bool run_during_stop)
|
||||||
}
|
}
|
||||||
// If the the queue was empty then kick the Host to come and get this job.
|
// If the the queue was empty then kick the Host to come and get this job.
|
||||||
if (send_message)
|
if (send_message)
|
||||||
Host_Message(WM_USER_JOB_DISPATCH);
|
Host_Message(HostMessageID::WMUserJobDispatch);
|
||||||
}
|
}
|
||||||
|
|
||||||
void HostDispatchJobs()
|
void HostDispatchJobs()
|
||||||
|
|
|
@ -100,7 +100,7 @@ void UpdateWantDeterminism(bool initial = false);
|
||||||
void QueueHostJob(std::function<void()> job, bool run_during_stop = false);
|
void QueueHostJob(std::function<void()> job, bool run_during_stop = false);
|
||||||
|
|
||||||
// Should be called periodically by the Host to run pending jobs.
|
// Should be called periodically by the Host to run pending jobs.
|
||||||
// WM_USER_JOB_DISPATCH will be sent when something is added to the queue.
|
// WMUserJobDispatch will be sent when something is added to the queue.
|
||||||
void HostDispatchJobs();
|
void HostDispatchJobs();
|
||||||
|
|
||||||
void DoFrameStep();
|
void DoFrameStep();
|
||||||
|
|
|
@ -112,7 +112,7 @@ public:
|
||||||
{
|
{
|
||||||
case CPU::State::PowerDown:
|
case CPU::State::PowerDown:
|
||||||
CPU::Break();
|
CPU::Break();
|
||||||
Host_Message(WM_USER_STOP);
|
Host_Message(HostMessageID::WMUserStop);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CPU::State::Stepping:
|
case CPU::State::Stepping:
|
||||||
|
|
|
@ -25,7 +25,7 @@ void HBReload()
|
||||||
{
|
{
|
||||||
// There isn't much we can do. Just stop cleanly.
|
// There isn't much we can do. Just stop cleanly.
|
||||||
CPU::Break();
|
CPU::Break();
|
||||||
Host_Message(WM_USER_STOP);
|
Host_Message(HostMessageID::WMUserStop);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GeckoCodeHandlerICacheFlush()
|
void GeckoCodeHandlerICacheFlush()
|
||||||
|
|
|
@ -8,25 +8,34 @@
|
||||||
|
|
||||||
// Host - defines an interface for the emulator core to communicate back to the
|
// Host - defines an interface for the emulator core to communicate back to the
|
||||||
// OS-specific layer
|
// OS-specific layer
|
||||||
|
//
|
||||||
// The emulator core is abstracted from the OS using 2 interfaces:
|
// The emulator core is abstracted from the OS using 2 interfaces:
|
||||||
// Common and Host.
|
// Common and Host.
|
||||||
|
//
|
||||||
// Common simply provides OS-neutral implementations of things like threads, mutexes,
|
// Common simply provides OS-neutral implementations of things like threads, mutexes,
|
||||||
// INI file manipulation, memory mapping, etc.
|
// INI file manipulation, memory mapping, etc.
|
||||||
|
//
|
||||||
// Host is an abstract interface for communicating things back to the host. The emulator
|
// Host is an abstract interface for communicating things back to the host. The emulator
|
||||||
// core is treated as a library, not as a main program, because it is far easier to
|
// core is treated as a library, not as a main program, because it is far easier to
|
||||||
// write GUI interfaces that control things than to squash GUI into some model that wasn't
|
// write GUI interfaces that control things than to squash GUI into some model that wasn't
|
||||||
// designed for it.
|
// designed for it.
|
||||||
|
//
|
||||||
// The host can be just a command line app that opens a window, or a full blown debugger
|
// The host can be just a command line app that opens a window, or a full blown debugger
|
||||||
// interface.
|
// interface.
|
||||||
|
|
||||||
|
enum class HostMessageID
|
||||||
|
{
|
||||||
|
// Begin at 10 in case there is already messages with wParam = 0, 1, 2 and so on
|
||||||
|
WMUserStop = 10,
|
||||||
|
WMUserCreate,
|
||||||
|
WMUserSetCursor,
|
||||||
|
WMUserJobDispatch,
|
||||||
|
};
|
||||||
|
|
||||||
bool Host_UINeedsControllerState();
|
bool Host_UINeedsControllerState();
|
||||||
bool Host_RendererHasFocus();
|
bool Host_RendererHasFocus();
|
||||||
bool Host_RendererIsFullscreen();
|
bool Host_RendererIsFullscreen();
|
||||||
void Host_Message(int Id);
|
void Host_Message(HostMessageID id);
|
||||||
void Host_NotifyMapLoaded();
|
void Host_NotifyMapLoaded();
|
||||||
void Host_RefreshDSPDebuggerWindow();
|
void Host_RefreshDSPDebuggerWindow();
|
||||||
void Host_RequestRenderWindowSize(int width, int height);
|
void Host_RequestRenderWindowSize(int width, int height);
|
||||||
|
|
|
@ -80,11 +80,11 @@ void Host_RefreshDSPDebuggerWindow()
|
||||||
}
|
}
|
||||||
|
|
||||||
static Common::Event updateMainFrameEvent;
|
static Common::Event updateMainFrameEvent;
|
||||||
void Host_Message(int Id)
|
void Host_Message(HostMessageID id)
|
||||||
{
|
{
|
||||||
if (Id == WM_USER_STOP)
|
if (id == HostMessageID::WMUserStop)
|
||||||
s_running.Clear();
|
s_running.Clear();
|
||||||
if (Id == WM_USER_JOB_DISPATCH || Id == WM_USER_STOP)
|
if (id == HostMessageID::WMUserJobDispatch || id == HostMessageID::WMUserStop)
|
||||||
updateMainFrameEvent.Set();
|
updateMainFrameEvent.Set();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -75,13 +75,13 @@ void Host::ResizeSurface(int new_width, int new_height)
|
||||||
g_renderer->ResizeSurface(new_width, new_height);
|
g_renderer->ResizeSurface(new_width, new_height);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Host_Message(int id)
|
void Host_Message(HostMessageID id)
|
||||||
{
|
{
|
||||||
if (id == WM_USER_STOP)
|
if (id == HostMessageID::WMUserStop)
|
||||||
{
|
{
|
||||||
emit Host::GetInstance()->RequestStop();
|
emit Host::GetInstance()->RequestStop();
|
||||||
}
|
}
|
||||||
else if (id == WM_USER_JOB_DISPATCH)
|
else if (id == HostMessageID::WMUserJobDispatch)
|
||||||
{
|
{
|
||||||
// Just poke the main thread to get it to wake up, job dispatch
|
// Just poke the main thread to get it to wake up, job dispatch
|
||||||
// will happen automatically before it goes back to sleep again.
|
// will happen automatically before it goes back to sleep again.
|
||||||
|
|
|
@ -53,6 +53,7 @@
|
||||||
#include "Core/HW/GCPad.h"
|
#include "Core/HW/GCPad.h"
|
||||||
#include "Core/HW/Wiimote.h"
|
#include "Core/HW/Wiimote.h"
|
||||||
#include "Core/HW/WiimoteEmu/WiimoteEmu.h"
|
#include "Core/HW/WiimoteEmu/WiimoteEmu.h"
|
||||||
|
#include "Core/Host.h"
|
||||||
#include "Core/HotkeyManager.h"
|
#include "Core/HotkeyManager.h"
|
||||||
#include "Core/IOS/IOS.h"
|
#include "Core/IOS/IOS.h"
|
||||||
#include "Core/IOS/USB/Bluetooth/BTBase.h"
|
#include "Core/IOS/USB/Bluetooth/BTBase.h"
|
||||||
|
@ -186,11 +187,11 @@ WXLRESULT CRenderFrame::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lPa
|
||||||
case WM_USER:
|
case WM_USER:
|
||||||
switch (wParam)
|
switch (wParam)
|
||||||
{
|
{
|
||||||
case WM_USER_STOP:
|
case static_cast<int>(HostMessageID::WMUserStop):
|
||||||
main_frame->DoStop();
|
main_frame->DoStop();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_USER_SETCURSOR:
|
case static_cast<int>(HostMessageID::WMUserSetCursor):
|
||||||
if (SConfig::GetInstance().bHideCursor && main_frame->RendererHasFocus() &&
|
if (SConfig::GetInstance().bHideCursor && main_frame->RendererHasFocus() &&
|
||||||
Core::GetState() == Core::State::Running)
|
Core::GetState() == Core::State::Running)
|
||||||
SetCursor(wxCURSOR_BLANK);
|
SetCursor(wxCURSOR_BLANK);
|
||||||
|
@ -758,7 +759,7 @@ void CFrame::OnHostMessage(wxCommandEvent& event)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_USER_CREATE:
|
case static_cast<int>(HostMessageID::WMUserCreate):
|
||||||
if (SConfig::GetInstance().bHideCursor)
|
if (SConfig::GetInstance().bHideCursor)
|
||||||
m_render_parent->SetCursor(wxCURSOR_BLANK);
|
m_render_parent->SetCursor(wxCURSOR_BLANK);
|
||||||
if (SConfig::GetInstance().bFullscreen)
|
if (SConfig::GetInstance().bFullscreen)
|
||||||
|
@ -776,7 +777,7 @@ void CFrame::OnHostMessage(wxCommandEvent& event)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_USER_STOP:
|
case static_cast<int>(HostMessageID::WMUserStop):
|
||||||
DoStop();
|
DoStop();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -415,15 +415,15 @@ CFrame* DolphinApp::GetCFrame()
|
||||||
return main_frame;
|
return main_frame;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Host_Message(int Id)
|
void Host_Message(HostMessageID id)
|
||||||
{
|
{
|
||||||
if (Id == WM_USER_JOB_DISPATCH)
|
if (id == HostMessageID::WMUserJobDispatch)
|
||||||
{
|
{
|
||||||
// Trigger a wxEVT_IDLE
|
// Trigger a wxEVT_IDLE
|
||||||
wxWakeUpIdle();
|
wxWakeUpIdle();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
wxCommandEvent event(wxEVT_HOST_COMMAND, Id);
|
wxCommandEvent event(wxEVT_HOST_COMMAND, static_cast<int>(id));
|
||||||
main_frame->GetEventHandler()->AddPendingEvent(event);
|
main_frame->GetEventHandler()->AddPendingEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ void Host_NotifyMapLoaded()
|
||||||
void Host_RefreshDSPDebuggerWindow()
|
void Host_RefreshDSPDebuggerWindow()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
void Host_Message(int)
|
void Host_Message(HostMessageID)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
void* Host_GetRenderHandle()
|
void* Host_GetRenderHandle()
|
||||||
|
|
|
@ -17,7 +17,7 @@ void Host_NotifyMapLoaded()
|
||||||
void Host_RefreshDSPDebuggerWindow()
|
void Host_RefreshDSPDebuggerWindow()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
void Host_Message(int)
|
void Host_Message(HostMessageID)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
void* Host_GetRenderHandle()
|
void* Host_GetRenderHandle()
|
||||||
|
|
Loading…
Reference in New Issue