NetWindow: Get rid of direct use of the main_window global
Utilizes the event system (which is what should have been done here initially), in order to prevent coupling between two different window frames. This also makes booting games more versatile using the UI event system, as the event can just act as a carrier for the filename, making directly calling boot functions unnecessary. All that's needed is for the event to propagate to the frame.
This commit is contained in:
parent
0c7d9bbb73
commit
ead076d335
|
@ -229,6 +229,8 @@ wxDEFINE_EVENT(wxEVT_HOST_COMMAND, wxCommandEvent);
|
||||||
wxDEFINE_EVENT(DOLPHIN_EVT_LOCAL_INI_CHANGED, wxCommandEvent);
|
wxDEFINE_EVENT(DOLPHIN_EVT_LOCAL_INI_CHANGED, wxCommandEvent);
|
||||||
wxDEFINE_EVENT(DOLPHIN_EVT_RELOAD_THEME_BITMAPS, wxCommandEvent);
|
wxDEFINE_EVENT(DOLPHIN_EVT_RELOAD_THEME_BITMAPS, wxCommandEvent);
|
||||||
wxDEFINE_EVENT(DOLPHIN_EVT_UPDATE_LOAD_WII_MENU_ITEM, wxCommandEvent);
|
wxDEFINE_EVENT(DOLPHIN_EVT_UPDATE_LOAD_WII_MENU_ITEM, wxCommandEvent);
|
||||||
|
wxDEFINE_EVENT(DOLPHIN_EVT_BOOT_SOFTWARE, wxCommandEvent);
|
||||||
|
wxDEFINE_EVENT(DOLPHIN_EVT_STOP_SOFTWARE, wxCommandEvent);
|
||||||
|
|
||||||
// Event tables
|
// Event tables
|
||||||
BEGIN_EVENT_TABLE(CFrame, CRenderFrame)
|
BEGIN_EVENT_TABLE(CFrame, CRenderFrame)
|
||||||
|
@ -495,6 +497,8 @@ void CFrame::BindEvents()
|
||||||
Bind(DOLPHIN_EVT_RELOAD_THEME_BITMAPS, &CFrame::OnReloadThemeBitmaps, this);
|
Bind(DOLPHIN_EVT_RELOAD_THEME_BITMAPS, &CFrame::OnReloadThemeBitmaps, this);
|
||||||
Bind(DOLPHIN_EVT_RELOAD_GAMELIST, &CFrame::OnReloadGameList, this);
|
Bind(DOLPHIN_EVT_RELOAD_GAMELIST, &CFrame::OnReloadGameList, this);
|
||||||
Bind(DOLPHIN_EVT_UPDATE_LOAD_WII_MENU_ITEM, &CFrame::OnUpdateLoadWiiMenuItem, this);
|
Bind(DOLPHIN_EVT_UPDATE_LOAD_WII_MENU_ITEM, &CFrame::OnUpdateLoadWiiMenuItem, this);
|
||||||
|
Bind(DOLPHIN_EVT_BOOT_SOFTWARE, &CFrame::OnPlay, this);
|
||||||
|
Bind(DOLPHIN_EVT_STOP_SOFTWARE, &CFrame::OnStop, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CFrame::RendererIsFullscreen()
|
bool CFrame::RendererIsFullscreen()
|
||||||
|
|
|
@ -62,6 +62,8 @@ private:
|
||||||
|
|
||||||
wxDECLARE_EVENT(DOLPHIN_EVT_RELOAD_THEME_BITMAPS, wxCommandEvent);
|
wxDECLARE_EVENT(DOLPHIN_EVT_RELOAD_THEME_BITMAPS, wxCommandEvent);
|
||||||
wxDECLARE_EVENT(DOLPHIN_EVT_UPDATE_LOAD_WII_MENU_ITEM, wxCommandEvent);
|
wxDECLARE_EVENT(DOLPHIN_EVT_UPDATE_LOAD_WII_MENU_ITEM, wxCommandEvent);
|
||||||
|
wxDECLARE_EVENT(DOLPHIN_EVT_BOOT_SOFTWARE, wxCommandEvent);
|
||||||
|
wxDECLARE_EVENT(DOLPHIN_EVT_STOP_SOFTWARE, wxCommandEvent);
|
||||||
|
|
||||||
class CFrame : public CRenderFrame
|
class CFrame : public CRenderFrame
|
||||||
{
|
{
|
||||||
|
|
|
@ -501,7 +501,7 @@ void CFrame::OnRecordExport(wxCommandEvent& WXUNUSED(event))
|
||||||
DoRecordingSave();
|
DoRecordingSave();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CFrame::OnPlay(wxCommandEvent& WXUNUSED(event))
|
void CFrame::OnPlay(wxCommandEvent& event)
|
||||||
{
|
{
|
||||||
if (Core::IsRunning())
|
if (Core::IsRunning())
|
||||||
{
|
{
|
||||||
|
@ -526,7 +526,7 @@ void CFrame::OnPlay(wxCommandEvent& WXUNUSED(event))
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Core is uninitialized, start the game
|
// Core is uninitialized, start the game
|
||||||
BootGame("");
|
BootGame(WxStrToStr(event.GetString()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
// Licensed under GPLv2+
|
// Licensed under GPLv2+
|
||||||
// Refer to the license.txt file included.
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include "DolphinWX/NetPlay/NetWindow.h"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
@ -43,9 +45,7 @@
|
||||||
#include "DolphinWX/Frame.h"
|
#include "DolphinWX/Frame.h"
|
||||||
#include "DolphinWX/GameListCtrl.h"
|
#include "DolphinWX/GameListCtrl.h"
|
||||||
#include "DolphinWX/ISOFile.h"
|
#include "DolphinWX/ISOFile.h"
|
||||||
#include "DolphinWX/Main.h"
|
|
||||||
#include "DolphinWX/NetPlay/ChangeGameDialog.h"
|
#include "DolphinWX/NetPlay/ChangeGameDialog.h"
|
||||||
#include "DolphinWX/NetPlay/NetWindow.h"
|
|
||||||
#include "DolphinWX/NetPlay/PadMapDialog.h"
|
#include "DolphinWX/NetPlay/PadMapDialog.h"
|
||||||
#include "DolphinWX/WxUtils.h"
|
#include "DolphinWX/WxUtils.h"
|
||||||
#include "MD5Dialog.h"
|
#include "MD5Dialog.h"
|
||||||
|
@ -369,12 +369,19 @@ void NetPlayDialog::OnStart(wxCommandEvent&)
|
||||||
|
|
||||||
void NetPlayDialog::BootGame(const std::string& filename)
|
void NetPlayDialog::BootGame(const std::string& filename)
|
||||||
{
|
{
|
||||||
main_frame->BootGame(filename);
|
wxCommandEvent play_event{DOLPHIN_EVT_BOOT_SOFTWARE, GetId()};
|
||||||
|
play_event.SetString(StrToWxStr(filename));
|
||||||
|
play_event.SetEventObject(this);
|
||||||
|
|
||||||
|
AddPendingEvent(play_event);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetPlayDialog::StopGame()
|
void NetPlayDialog::StopGame()
|
||||||
{
|
{
|
||||||
main_frame->DoStop();
|
wxCommandEvent stop_event{DOLPHIN_EVT_STOP_SOFTWARE, GetId()};
|
||||||
|
stop_event.SetEventObject(this);
|
||||||
|
|
||||||
|
AddPendingEvent(stop_event);
|
||||||
}
|
}
|
||||||
|
|
||||||
// NetPlayUI methods called from ---NETPLAY--- thread
|
// NetPlayUI methods called from ---NETPLAY--- thread
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <wx/frame.h>
|
#include <wx/frame.h>
|
||||||
|
|
||||||
|
#include "Common/CommonTypes.h"
|
||||||
#include "Common/FifoQueue.h"
|
#include "Common/FifoQueue.h"
|
||||||
#include "Core/NetPlayClient.h"
|
#include "Core/NetPlayClient.h"
|
||||||
#include "Core/NetPlayProto.h"
|
#include "Core/NetPlayProto.h"
|
||||||
|
|
Loading…
Reference in New Issue