Frame: Remove callback function prototypes from header
Gets rid of more direct usages of the main_frame global, keeping the callbacks internal to the frame itself.
This commit is contained in:
parent
ee0e6fa09c
commit
c457ee4995
|
@ -104,7 +104,7 @@ static Common::Flag s_is_booting;
|
||||||
static void* s_window_handle = nullptr;
|
static void* s_window_handle = nullptr;
|
||||||
static std::string s_state_filename;
|
static std::string s_state_filename;
|
||||||
static std::thread s_emu_thread;
|
static std::thread s_emu_thread;
|
||||||
static StoppedCallbackFunc s_on_stopped_callback = nullptr;
|
static StoppedCallbackFunc s_on_stopped_callback;
|
||||||
|
|
||||||
static std::thread s_cpu_thread;
|
static std::thread s_cpu_thread;
|
||||||
static bool s_request_refresh_info = false;
|
static bool s_request_refresh_info = false;
|
||||||
|
@ -938,7 +938,7 @@ void Shutdown()
|
||||||
|
|
||||||
void SetOnStoppedCallback(StoppedCallbackFunc callback)
|
void SetOnStoppedCallback(StoppedCallbackFunc callback)
|
||||||
{
|
{
|
||||||
s_on_stopped_callback = callback;
|
s_on_stopped_callback = std::move(callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateWantDeterminism(bool initial)
|
void UpdateWantDeterminism(bool initial)
|
||||||
|
|
|
@ -84,7 +84,7 @@ void UpdateTitle();
|
||||||
bool PauseAndLock(bool doLock, bool unpauseOnUnlock = true);
|
bool PauseAndLock(bool doLock, bool unpauseOnUnlock = true);
|
||||||
|
|
||||||
// for calling back into UI code without introducing a dependency on it in core
|
// for calling back into UI code without introducing a dependency on it in core
|
||||||
typedef void (*StoppedCallbackFunc)(void);
|
using StoppedCallbackFunc = std::function<void()>;
|
||||||
void SetOnStoppedCallback(StoppedCallbackFunc callback);
|
void SetOnStoppedCallback(StoppedCallbackFunc callback);
|
||||||
|
|
||||||
// Run on the Host thread when the factors change. [NOT THREADSAFE]
|
// Run on the Host thread when the factors change. [NOT THREADSAFE]
|
||||||
|
|
|
@ -57,7 +57,7 @@ static HEAP_ALLOC(wrkmem, LZO1X_1_MEM_COMPRESS);
|
||||||
|
|
||||||
static std::string g_last_filename;
|
static std::string g_last_filename;
|
||||||
|
|
||||||
static CallbackFunc g_onAfterLoadCb = nullptr;
|
static AfterLoadCallbackFunc s_on_after_load_callback;
|
||||||
|
|
||||||
// Temporary undo state buffer
|
// Temporary undo state buffer
|
||||||
static std::vector<u8> g_undo_load_buffer;
|
static std::vector<u8> g_undo_load_buffer;
|
||||||
|
@ -607,8 +607,8 @@ void LoadAs(const std::string& filename)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_onAfterLoadCb)
|
if (s_on_after_load_callback)
|
||||||
g_onAfterLoadCb();
|
s_on_after_load_callback();
|
||||||
|
|
||||||
g_loadDepth--;
|
g_loadDepth--;
|
||||||
|
|
||||||
|
@ -616,9 +616,9 @@ void LoadAs(const std::string& filename)
|
||||||
Core::PauseAndLock(false, wasUnpaused);
|
Core::PauseAndLock(false, wasUnpaused);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetOnAfterLoadCallback(CallbackFunc callback)
|
void SetOnAfterLoadCallback(AfterLoadCallbackFunc callback)
|
||||||
{
|
{
|
||||||
g_onAfterLoadCb = callback;
|
s_on_after_load_callback = std::move(callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VerifyAt(const std::string& filename)
|
void VerifyAt(const std::string& filename)
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <functional>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
@ -61,6 +62,6 @@ void UndoLoadState();
|
||||||
void Flush();
|
void Flush();
|
||||||
|
|
||||||
// for calling back into UI code without introducing a dependency on it in core
|
// for calling back into UI code without introducing a dependency on it in core
|
||||||
typedef void (*CallbackFunc)(void);
|
using AfterLoadCallbackFunc = std::function<void()>;
|
||||||
void SetOnAfterLoadCallback(CallbackFunc callback);
|
void SetOnAfterLoadCallback(AfterLoadCallbackFunc callback);
|
||||||
}
|
}
|
||||||
|
|
|
@ -392,9 +392,7 @@ CFrame::CFrame(wxFrame* parent, wxWindowID id, const wxString& title, wxRect geo
|
||||||
m_LogWindow->Disable();
|
m_LogWindow->Disable();
|
||||||
|
|
||||||
InitializeTASDialogs();
|
InitializeTASDialogs();
|
||||||
|
InitializeCoreCallbacks();
|
||||||
State::SetOnAfterLoadCallback(OnAfterLoadCallback);
|
|
||||||
Core::SetOnStoppedCallback(OnStoppedCallback);
|
|
||||||
|
|
||||||
// Setup perspectives
|
// Setup perspectives
|
||||||
if (g_pCodeWindow)
|
if (g_pCodeWindow)
|
||||||
|
@ -515,6 +513,20 @@ void CFrame::InitializeTASDialogs()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CFrame::InitializeCoreCallbacks()
|
||||||
|
{
|
||||||
|
// Warning: this gets called from the CPU thread, so we should
|
||||||
|
// only queue things to do on the proper thread
|
||||||
|
State::SetOnAfterLoadCallback([this] {
|
||||||
|
AddPendingEvent(wxCommandEvent{wxEVT_HOST_COMMAND, IDM_UPDATE_GUI});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Warning: this gets called from the EmuThread
|
||||||
|
Core::SetOnStoppedCallback([this] {
|
||||||
|
AddPendingEvent(wxCommandEvent{wxEVT_HOST_COMMAND, IDM_STOPPED});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
bool CFrame::RendererIsFullscreen()
|
bool CFrame::RendererIsFullscreen()
|
||||||
{
|
{
|
||||||
bool fullscreen = false;
|
bool fullscreen = false;
|
||||||
|
@ -1025,28 +1037,6 @@ static int GetMenuIDFromHotkey(unsigned int key)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnAfterLoadCallback()
|
|
||||||
{
|
|
||||||
// warning: this gets called from the CPU thread, so we should only queue things to do on the
|
|
||||||
// proper thread
|
|
||||||
if (main_frame)
|
|
||||||
{
|
|
||||||
wxCommandEvent event(wxEVT_HOST_COMMAND, IDM_UPDATE_GUI);
|
|
||||||
main_frame->GetEventHandler()->AddPendingEvent(event);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void OnStoppedCallback()
|
|
||||||
{
|
|
||||||
// warning: this gets called from the EmuThread, so we should only queue things to do on the
|
|
||||||
// proper thread
|
|
||||||
if (main_frame)
|
|
||||||
{
|
|
||||||
wxCommandEvent event(wxEVT_HOST_COMMAND, IDM_STOPPED);
|
|
||||||
main_frame->GetEventHandler()->AddPendingEvent(event);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void CFrame::OnKeyDown(wxKeyEvent& event)
|
void CFrame::OnKeyDown(wxKeyEvent& event)
|
||||||
{
|
{
|
||||||
// On OS X, we claim all keyboard events while
|
// On OS X, we claim all keyboard events while
|
||||||
|
|
|
@ -174,6 +174,7 @@ private:
|
||||||
wxMenuBar* CreateMenuBar() const;
|
wxMenuBar* CreateMenuBar() const;
|
||||||
|
|
||||||
void InitializeTASDialogs();
|
void InitializeTASDialogs();
|
||||||
|
void InitializeCoreCallbacks();
|
||||||
|
|
||||||
// Utility
|
// Utility
|
||||||
wxWindow* GetNotebookPageFromId(wxWindowID Id);
|
wxWindow* GetNotebookPageFromId(wxWindowID Id);
|
||||||
|
@ -337,6 +338,3 @@ private:
|
||||||
// Event table
|
// Event table
|
||||||
DECLARE_EVENT_TABLE();
|
DECLARE_EVENT_TABLE();
|
||||||
};
|
};
|
||||||
|
|
||||||
void OnAfterLoadCallback();
|
|
||||||
void OnStoppedCallback();
|
|
||||||
|
|
Loading…
Reference in New Issue