Fix a memory leak in the breakpoint window.
Parent message alerts by the active window. This way if another window is open it isn't pushed behind the main window. We probably should parent the message alerts by the calling window instead, but this may be good enough. Make sure there is only one instance of some modeless windows (Cheats Manager and Net Play). git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@7257 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
449e79aea5
commit
217ee43063
|
@ -42,21 +42,21 @@ NetPlay::NetPlay(NetPlayUI* dialog)
|
|||
|
||||
void NetPlay_Enable(NetPlay* const np)
|
||||
{
|
||||
CritLocker crit(::crit_netplay_ptr); // probably safe without a lock
|
||||
::netplay_ptr = np;
|
||||
CritLocker crit(crit_netplay_ptr); // probably safe without a lock
|
||||
netplay_ptr = np;
|
||||
}
|
||||
|
||||
void NetPlay_Disable()
|
||||
{
|
||||
CritLocker crit(::crit_netplay_ptr);
|
||||
::netplay_ptr = NULL;
|
||||
CritLocker crit(crit_netplay_ptr);
|
||||
netplay_ptr = NULL;
|
||||
}
|
||||
|
||||
// called from ---GUI--- thread
|
||||
NetPlay::~NetPlay()
|
||||
{
|
||||
CritLocker crit(crit_netplay_ptr);
|
||||
::netplay_ptr = NULL;
|
||||
netplay_ptr = NULL;
|
||||
|
||||
// not perfect
|
||||
if (m_is_running)
|
||||
|
@ -288,9 +288,9 @@ u8 NetPlay::GetPadNum(u8 numPAD)
|
|||
// Actual Core function which is called on every frame
|
||||
bool CSIDevice_GCController::NetPlay_GetInput(u8 numPAD, SPADStatus PadStatus, u32 *PADStatus)
|
||||
{
|
||||
CritLocker crit(::crit_netplay_ptr);
|
||||
CritLocker crit(crit_netplay_ptr);
|
||||
|
||||
if (::netplay_ptr)
|
||||
if (netplay_ptr)
|
||||
return netplay_ptr->GetNetPads(numPAD, &PadStatus, (NetPad*)PADStatus);
|
||||
else
|
||||
return false;
|
||||
|
@ -300,9 +300,9 @@ bool CSIDevice_GCController::NetPlay_GetInput(u8 numPAD, SPADStatus PadStatus, u
|
|||
// so all players' games get the same time
|
||||
u32 CEXIIPL::NetPlay_GetGCTime()
|
||||
{
|
||||
CritLocker crit(::crit_netplay_ptr);
|
||||
CritLocker crit(crit_netplay_ptr);
|
||||
|
||||
if (::netplay_ptr)
|
||||
if (netplay_ptr)
|
||||
return 1272737767; // watev
|
||||
else
|
||||
return 0;
|
||||
|
@ -312,10 +312,10 @@ u32 CEXIIPL::NetPlay_GetGCTime()
|
|||
// return the local pad num that should rumble given a ingame pad num
|
||||
u8 CSIDevice_GCController::NetPlay_GetPadNum(u8 numPAD)
|
||||
{
|
||||
CritLocker crit(::crit_netplay_ptr);
|
||||
CritLocker crit(crit_netplay_ptr);
|
||||
|
||||
if (::netplay_ptr)
|
||||
return ::netplay_ptr->GetPadNum(numPAD);
|
||||
if (netplay_ptr)
|
||||
return netplay_ptr->GetPadNum(numPAD);
|
||||
else
|
||||
return numPAD;
|
||||
}
|
||||
|
@ -325,20 +325,20 @@ u8 CSIDevice_GCController::NetPlay_GetPadNum(u8 numPAD)
|
|||
//void CWII_IPC_HLE_Device_usb_oh1_57e_305::NetPlay_WiimoteUpdate(int _number)
|
||||
void CWII_IPC_HLE_Device_usb_oh1_57e_305::NetPlay_WiimoteUpdate(int)
|
||||
{
|
||||
//CritLocker crit(::crit_netplay_ptr);
|
||||
//CritLocker crit(crit_netplay_ptr);
|
||||
|
||||
//if (::netplay_ptr)
|
||||
// ::netplay_ptr->WiimoteUpdate(_number);
|
||||
//if (netplay_ptr)
|
||||
// netplay_ptr->WiimoteUpdate(_number);
|
||||
}
|
||||
|
||||
// called from ---CPU--- thread
|
||||
//
|
||||
int CWII_IPC_HLE_WiiMote::NetPlay_GetWiimoteNum(int _number)
|
||||
{
|
||||
//CritLocker crit(::crit_netplay_ptr);
|
||||
//CritLocker crit(crit_netplay_ptr);
|
||||
|
||||
//if (::netplay_ptr)
|
||||
// return ::netplay_ptr->GetPadNum(_number); // just using gcpad mapping for now
|
||||
//if (netplay_ptr)
|
||||
// return netplay_ptr->GetPadNum(_number); // just using gcpad mapping for now
|
||||
//else
|
||||
return _number;
|
||||
}
|
||||
|
@ -348,9 +348,9 @@ int CWII_IPC_HLE_WiiMote::NetPlay_GetWiimoteNum(int _number)
|
|||
//bool CWII_IPC_HLE_WiiMote::NetPlay_WiimoteInput(int _number, u16 _channelID, const void* _pData, u32& _Size)
|
||||
bool CWII_IPC_HLE_WiiMote::NetPlay_WiimoteInput(int, u16, const void*, u32&)
|
||||
{
|
||||
CritLocker crit(::crit_netplay_ptr);
|
||||
CritLocker crit(crit_netplay_ptr);
|
||||
|
||||
if (::netplay_ptr)
|
||||
if (netplay_ptr)
|
||||
//{
|
||||
// if (_Size >= RPT_SIZE_HACK)
|
||||
// {
|
||||
|
@ -359,7 +359,7 @@ bool CWII_IPC_HLE_WiiMote::NetPlay_WiimoteInput(int, u16, const void*, u32&)
|
|||
// }
|
||||
// else
|
||||
// {
|
||||
// ::netplay_ptr->WiimoteInput(_number, _channelID, _pData, _Size);
|
||||
// netplay_ptr->WiimoteInput(_number, _channelID, _pData, _Size);
|
||||
// // don't use this packet
|
||||
return true;
|
||||
// }
|
||||
|
|
|
@ -171,9 +171,6 @@ protected:
|
|||
Player* m_local_player;
|
||||
|
||||
u32 m_current_game;
|
||||
|
||||
private:
|
||||
|
||||
};
|
||||
|
||||
void NetPlay_Enable(NetPlay* const np);
|
||||
|
|
|
@ -129,7 +129,7 @@ void SignatureDB::Apply(PPCSymbolDB *symbol_db)
|
|||
else
|
||||
{
|
||||
function->name = iter->second.name;
|
||||
ERROR_LOG(OSHLE, "Wrong sizzze! Found %s at %08x (size: %08x instead of %08x)!", iter->second.name.c_str(), function->address, function->size, iter->second.size);
|
||||
ERROR_LOG(OSHLE, "Wrong size! Found %s at %08x (size: %08x instead of %08x)!", iter->second.name.c_str(), function->address, function->size, iter->second.size);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,12 +23,14 @@
|
|||
#include "VolumeHandler.h"
|
||||
#include "ISOProperties.h"
|
||||
#include "HW/Memmap.h"
|
||||
#include "Frame.h"
|
||||
|
||||
#define _connect_macro_(b, f, c, s) (b)->Connect(wxID_ANY, (c), wxCommandEventHandler(f), (wxObject*)0, (wxEvtHandler*)s)
|
||||
|
||||
#define MAX_CHEAT_SEARCH_RESULTS_DISPLAY 256
|
||||
|
||||
extern std::vector<ActionReplay::ARCode> arCodes;
|
||||
extern CFrame* main_frame;
|
||||
|
||||
// meh
|
||||
static wxCheatsWindow *g_cheat_window;
|
||||
|
@ -59,6 +61,11 @@ wxCheatsWindow::wxCheatsWindow(wxWindow* const parent)
|
|||
Show();
|
||||
}
|
||||
|
||||
wxCheatsWindow::~wxCheatsWindow()
|
||||
{
|
||||
main_frame->g_CheatsWindow = NULL;
|
||||
}
|
||||
|
||||
void wxCheatsWindow::Init_ChildControls()
|
||||
{
|
||||
wxPanel* const panel = new wxPanel(this);
|
||||
|
|
|
@ -107,6 +107,7 @@ class wxCheatsWindow : public wxFrame
|
|||
|
||||
public:
|
||||
wxCheatsWindow(wxWindow* const parent);
|
||||
~wxCheatsWindow();
|
||||
|
||||
protected:
|
||||
|
||||
|
|
|
@ -70,7 +70,7 @@ public:
|
|||
m_imageListNormal->Add(m_Bitmaps[Toolbar_Delete]);
|
||||
m_imageListNormal->Add(m_Bitmaps[Toolbar_Add_BP]);
|
||||
m_imageListNormal->Add(m_Bitmaps[Toolbar_Add_MC]);
|
||||
SetImageList(m_imageListNormal, wxIMAGE_LIST_NORMAL);
|
||||
AssignImageList(m_imageListNormal, wxIMAGE_LIST_NORMAL);
|
||||
|
||||
toolbar_map.insert(toolbar_p(InsertItem(0, _("Delete"), 0), &CBreakPointWindow::OnDelete));
|
||||
toolbar_map.insert(toolbar_p(InsertItem(1, _("Clear"), 0), &CBreakPointWindow::OnClear));
|
||||
|
@ -115,9 +115,6 @@ void CBreakPointWindow::OnClose(wxCloseEvent& WXUNUSED(event))
|
|||
|
||||
void CBreakPointWindow::CreateGUIControls()
|
||||
{
|
||||
SetSize(8, 8, 400, 370);
|
||||
Center();
|
||||
|
||||
m_BreakPointBar = new CBreakPointBar(this, ID_TOOLBAR, wxDefaultPosition, wxSize(0, 55),
|
||||
wxLC_ICON | wxSUNKEN_BORDER | wxLC_SINGLE_SEL);
|
||||
m_BreakPointListView = new CBreakPointView(this, ID_BPS, wxDefaultPosition, wxDefaultSize,
|
||||
|
|
|
@ -341,7 +341,7 @@ CFrame::CFrame(wxFrame* parent,
|
|||
bool ShowLogWindow,
|
||||
long style)
|
||||
: CRenderFrame(parent, id, title, pos, size, style)
|
||||
, g_pCodeWindow(NULL)
|
||||
, g_pCodeWindow(NULL), g_NetPlaySetupDiag(NULL), g_CheatsWindow(NULL)
|
||||
, bRenderToMain(false), bNoWiimoteMsg(false)
|
||||
, m_ToolBar(NULL), m_ToolBarDebug(NULL), m_ToolBarAui(NULL)
|
||||
, m_GameListCtrl(NULL), m_Panel(NULL)
|
||||
|
@ -667,7 +667,7 @@ void CFrame::OnHostMessage(wxCommandEvent& event)
|
|||
#ifdef __WXGTK__
|
||||
case IDM_PANIC:
|
||||
bPanicResult = (wxYES == wxMessageBox(event.GetString(),
|
||||
_("Warning"), event.GetInt() ? wxYES_NO : wxOK, this));
|
||||
_("Warning"), event.GetInt() ? wxYES_NO : wxOK, wxGetActiveWindow()));
|
||||
panic_event.Set();
|
||||
break;
|
||||
case IDM_KEYSTATE:
|
||||
|
|
|
@ -48,6 +48,8 @@ static inline wxBitmap _wxGetBitmapFromMemory(const unsigned char* data, int len
|
|||
class CGameListCtrl;
|
||||
class GameListItem;
|
||||
class CLogWindow;
|
||||
class NetPlaySetupDiag;
|
||||
class wxCheatsWindow;
|
||||
|
||||
// The CPanel class to receive MSWWindowProc messages from the video backend.
|
||||
class CPanel : public wxPanel
|
||||
|
@ -112,6 +114,8 @@ class CFrame : public CRenderFrame
|
|||
|
||||
// These have to be public
|
||||
CCodeWindow* g_pCodeWindow;
|
||||
NetPlaySetupDiag* g_NetPlaySetupDiag;
|
||||
wxCheatsWindow* g_CheatsWindow;
|
||||
void InitBitmaps();
|
||||
void DoPause();
|
||||
void DoStop();
|
||||
|
|
|
@ -96,11 +96,6 @@ extern "C" {
|
|||
#include "../resources/KDE.h"
|
||||
};
|
||||
|
||||
|
||||
// Other Windows
|
||||
wxCheatsWindow* CheatsWindow;
|
||||
|
||||
|
||||
// Create menu items
|
||||
// ---------------------
|
||||
void CFrame::CreateMenu()
|
||||
|
@ -1274,7 +1269,15 @@ void CFrame::StatusBarMessage(const char * Text, ...)
|
|||
// NetPlay stuff
|
||||
void CFrame::OnNetPlay(wxCommandEvent& WXUNUSED (event))
|
||||
{
|
||||
new NetPlaySetupDiag(this, m_GameListCtrl);
|
||||
if (!g_NetPlaySetupDiag)
|
||||
{
|
||||
if (NetPlayDiag::GetInstance() != NULL)
|
||||
NetPlayDiag::GetInstance()->Raise();
|
||||
else
|
||||
g_NetPlaySetupDiag = new NetPlaySetupDiag(this, m_GameListCtrl);
|
||||
}
|
||||
else
|
||||
g_NetPlaySetupDiag->Raise();
|
||||
}
|
||||
|
||||
void CFrame::OnMemcard(wxCommandEvent& WXUNUSED (event))
|
||||
|
@ -1300,7 +1303,10 @@ void CFrame::OnImportSave(wxCommandEvent& WXUNUSED (event))
|
|||
|
||||
void CFrame::OnShow_CheatsWindow(wxCommandEvent& WXUNUSED (event))
|
||||
{
|
||||
CheatsWindow = new wxCheatsWindow(this);
|
||||
if (!g_CheatsWindow)
|
||||
g_CheatsWindow = new wxCheatsWindow(this);
|
||||
else
|
||||
g_CheatsWindow->Raise();
|
||||
}
|
||||
|
||||
void CFrame::OnLoadWiiMenu(wxCommandEvent& event)
|
||||
|
|
|
@ -468,7 +468,7 @@ bool wxMsgAlert(const char* caption, const char* text, bool yes_no, int /*Style*
|
|||
#endif
|
||||
return wxYES == wxMessageBox(wxString::FromUTF8(text),
|
||||
wxString::FromUTF8(caption),
|
||||
(yes_no) ? wxYES_NO : wxOK, main_frame);
|
||||
(yes_no) ? wxYES_NO : wxOK, wxGetActiveWindow());
|
||||
#ifdef __WXGTK__
|
||||
else
|
||||
{
|
||||
|
|
|
@ -24,7 +24,8 @@
|
|||
|
||||
#include <sstream>
|
||||
|
||||
#define _connect_macro_( b, f, c, s ) (b)->Connect( wxID_ANY, (c), wxCommandEventHandler( f ), (wxObject*)0, (wxEvtHandler*)s )
|
||||
#define _connect_macro_(b, f, c, s) \
|
||||
(b)->Connect(wxID_ANY, (c), wxCommandEventHandler(f), (wxObject*)0, (wxEvtHandler*)s)
|
||||
|
||||
#define NETPLAY_TITLEBAR "Dolphin NetPlay"
|
||||
|
||||
|
@ -35,6 +36,7 @@ END_EVENT_TABLE()
|
|||
|
||||
static NetPlay* netplay_ptr = NULL;
|
||||
extern CFrame* main_frame;
|
||||
NetPlayDiag *NetPlayDiag::npd = NULL;
|
||||
|
||||
NetPlaySetupDiag::NetPlaySetupDiag(wxWindow* const parent, const CGameListCtrl* const game_list)
|
||||
: wxFrame(parent, wxID_ANY, wxT(NETPLAY_TITLEBAR), wxDefaultPosition, wxDefaultSize)
|
||||
|
@ -47,7 +49,8 @@ NetPlaySetupDiag::NetPlaySetupDiag(wxWindow* const parent, const CGameListCtrl*
|
|||
wxPanel* const panel = new wxPanel(this);
|
||||
|
||||
// top row
|
||||
wxStaticText* const nick_lbl = new wxStaticText(panel, wxID_ANY, _("Nickname :"), wxDefaultPosition, wxDefaultSize);
|
||||
wxStaticText* const nick_lbl = new wxStaticText(panel, wxID_ANY, _("Nickname :"),
|
||||
wxDefaultPosition, wxDefaultSize);
|
||||
|
||||
std::string nickname;
|
||||
netplay_section.Get("Nickname", &nickname, "Player");
|
||||
|
@ -68,13 +71,15 @@ NetPlaySetupDiag::NetPlaySetupDiag(wxWindow* const parent, const CGameListCtrl*
|
|||
|
||||
// connect tab
|
||||
{
|
||||
wxStaticText* const ip_lbl = new wxStaticText(connect_tab, wxID_ANY, _("Address :"), wxDefaultPosition, wxDefaultSize);
|
||||
wxStaticText* const ip_lbl = new wxStaticText(connect_tab, wxID_ANY, _("Address :"),
|
||||
wxDefaultPosition, wxDefaultSize);
|
||||
|
||||
std::string address;
|
||||
netplay_section.Get("Address", &address, "localhost");
|
||||
m_connect_ip_text = new wxTextCtrl(connect_tab, wxID_ANY, wxString::FromAscii(address.c_str()));
|
||||
|
||||
wxStaticText* const port_lbl = new wxStaticText(connect_tab, wxID_ANY, _("Port :"), wxDefaultPosition, wxDefaultSize);
|
||||
wxStaticText* const port_lbl = new wxStaticText(connect_tab, wxID_ANY, _("Port :"),
|
||||
wxDefaultPosition, wxDefaultSize);
|
||||
|
||||
// string? w/e
|
||||
std::string port;
|
||||
|
@ -84,9 +89,9 @@ NetPlaySetupDiag::NetPlaySetupDiag(wxWindow* const parent, const CGameListCtrl*
|
|||
wxButton* const connect_btn = new wxButton(connect_tab, wxID_ANY, _("Connect"));
|
||||
_connect_macro_(connect_btn, NetPlaySetupDiag::OnJoin, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
|
||||
wxStaticText* const alert_lbl = new wxStaticText(connect_tab, wxID_ANY
|
||||
, _("ALERT:\n\nNetPlay will currently only work properly when using the following settings:\n - Dual Core [OFF]\n - Audio Throttle [OFF]\n - DSP-HLE with \"Null Audio\" or DSP-LLE\n - Manually set the exact number of controllers that will be used to [Standard Controller]\n\nAll players should try to use the same Dolphin version and settings.\nDisable all memory cards or send them to all players before starting.\nWiimote support has not been implemented.\n\nYou must forward TCP port to host!!")
|
||||
, wxDefaultPosition, wxDefaultSize);
|
||||
wxStaticText* const alert_lbl = new wxStaticText(connect_tab, wxID_ANY,
|
||||
_("ALERT:\n\nNetPlay will currently only work properly when using the following settings:\n - Dual Core [OFF]\n - Audio Throttle [OFF]\n - DSP-HLE with \"Null Audio\" or DSP-LLE\n - Manually set the exact number of controllers that will be used to [Standard Controller]\n\nAll players should try to use the same Dolphin version and settings.\nDisable all memory cards or send them to all players before starting.\nWiimote support has not been implemented.\n\nYou must forward TCP port to host!!"),
|
||||
wxDefaultPosition, wxDefaultSize);
|
||||
|
||||
wxBoxSizer* const top_szr = new wxBoxSizer(wxHORIZONTAL);
|
||||
top_szr->Add(ip_lbl, 0, wxCENTER | wxRIGHT, 5);
|
||||
|
@ -106,7 +111,8 @@ NetPlaySetupDiag::NetPlaySetupDiag(wxWindow* const parent, const CGameListCtrl*
|
|||
|
||||
// host tab
|
||||
{
|
||||
wxStaticText* const port_lbl = new wxStaticText(host_tab, wxID_ANY, _("Port :"), wxDefaultPosition, wxDefaultSize);
|
||||
wxStaticText* const port_lbl = new wxStaticText(host_tab, wxID_ANY, _("Port :"),
|
||||
wxDefaultPosition, wxDefaultSize);
|
||||
|
||||
// string? w/e
|
||||
std::string port;
|
||||
|
@ -171,11 +177,13 @@ NetPlaySetupDiag::~NetPlaySetupDiag()
|
|||
netplay_section.Set("HostPort", m_host_port_text->GetValue().mb_str());
|
||||
|
||||
inifile.Save(dolphin_ini);
|
||||
main_frame->g_NetPlaySetupDiag = NULL;
|
||||
}
|
||||
|
||||
void NetPlaySetupDiag::OnHost(wxCommandEvent&)
|
||||
{
|
||||
if (::netplay_ptr)
|
||||
NetPlayDiag *&npd = NetPlayDiag::GetInstance();
|
||||
if (npd)
|
||||
{
|
||||
PanicAlertT("A NetPlay window is already open!!");
|
||||
return;
|
||||
|
@ -189,14 +197,13 @@ void NetPlaySetupDiag::OnHost(wxCommandEvent&)
|
|||
|
||||
std::string game(m_game_lbox->GetStringSelection().mb_str());
|
||||
|
||||
NetPlayDiag* const npd = new NetPlayDiag(m_parent, m_game_list, game, true);
|
||||
npd = new NetPlayDiag(m_parent, m_game_list, game, true);
|
||||
unsigned long port = 0;
|
||||
m_host_port_text->GetValue().ToULong(&port);
|
||||
::netplay_ptr = new NetPlayServer(u16(port)
|
||||
netplay_ptr = new NetPlayServer(u16(port)
|
||||
, std::string(m_nickname_text->GetValue().mb_str()), npd, game);
|
||||
if (::netplay_ptr->is_connected)
|
||||
if (netplay_ptr->is_connected)
|
||||
{
|
||||
//NetPlayServerDiag* const npsd =
|
||||
npd->Show();
|
||||
Destroy();
|
||||
}
|
||||
|
@ -204,36 +211,31 @@ void NetPlaySetupDiag::OnHost(wxCommandEvent&)
|
|||
{
|
||||
PanicAlertT("Failed to Listen!!");
|
||||
npd->Destroy();
|
||||
// dialog will delete netplay
|
||||
//delete ::netplay_ptr;
|
||||
}
|
||||
}
|
||||
|
||||
void NetPlaySetupDiag::OnJoin(wxCommandEvent&)
|
||||
{
|
||||
if (::netplay_ptr)
|
||||
NetPlayDiag *&npd = NetPlayDiag::GetInstance();
|
||||
if (npd)
|
||||
{
|
||||
PanicAlertT("A NetPlay window is already open!!");
|
||||
return;
|
||||
}
|
||||
|
||||
NetPlayDiag* const npd = new NetPlayDiag(m_parent, m_game_list, "");
|
||||
npd = new NetPlayDiag(m_parent, m_game_list, "");
|
||||
unsigned long port = 0;
|
||||
m_connect_port_text->GetValue().ToULong(&port);
|
||||
::netplay_ptr = new NetPlayClient(std::string(m_connect_ip_text->GetValue().mb_str())
|
||||
netplay_ptr = new NetPlayClient(std::string(m_connect_ip_text->GetValue().mb_str())
|
||||
, (u16)port, npd, std::string(m_nickname_text->GetValue().mb_str()));
|
||||
if (::netplay_ptr->is_connected)
|
||||
if (netplay_ptr->is_connected)
|
||||
{
|
||||
//NetPlayServerDiag* const npsd =
|
||||
npd->Show();
|
||||
Destroy();
|
||||
}
|
||||
else
|
||||
{
|
||||
//PanicAlertT("Failed to Connect!!");
|
||||
npd->Destroy();
|
||||
// dialog will delete netplay
|
||||
//delete ::netplay_ptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -242,8 +244,8 @@ void NetPlaySetupDiag::OnQuit(wxCommandEvent&)
|
|||
Destroy();
|
||||
}
|
||||
|
||||
NetPlayDiag::NetPlayDiag(wxWindow* const parent, const CGameListCtrl* const game_list
|
||||
, const std::string& game, const bool is_hosting)
|
||||
NetPlayDiag::NetPlayDiag(wxWindow* const parent, const CGameListCtrl* const game_list,
|
||||
const std::string& game, const bool is_hosting)
|
||||
: wxFrame(parent, wxID_ANY, wxT(NETPLAY_TITLEBAR), wxDefaultPosition, wxDefaultSize)
|
||||
, m_selected_game(game)
|
||||
, m_game_list(game_list)
|
||||
|
@ -251,8 +253,9 @@ NetPlayDiag::NetPlayDiag(wxWindow* const parent, const CGameListCtrl* const game
|
|||
wxPanel* const panel = new wxPanel(this);
|
||||
|
||||
// top crap
|
||||
m_game_btn = new wxButton(panel, wxID_ANY
|
||||
, wxString(m_selected_game.c_str(), *wxConvCurrent).Prepend(_(" Game : ")), wxDefaultPosition, wxDefaultSize, wxBU_LEFT);
|
||||
m_game_btn = new wxButton(panel, wxID_ANY,
|
||||
wxString(m_selected_game.c_str(), *wxConvCurrent).Prepend(_(" Game : ")),
|
||||
wxDefaultPosition, wxDefaultSize, wxBU_LEFT);
|
||||
|
||||
if (is_hosting)
|
||||
_connect_macro_(m_game_btn, NetPlayDiag::OnChangeGame, wxEVT_COMMAND_BUTTON_CLICKED, this);
|
||||
|
@ -338,11 +341,12 @@ NetPlayDiag::NetPlayDiag(wxWindow* const parent, const CGameListCtrl* const game
|
|||
|
||||
NetPlayDiag::~NetPlayDiag()
|
||||
{
|
||||
if (::netplay_ptr)
|
||||
if (netplay_ptr)
|
||||
{
|
||||
delete netplay_ptr;
|
||||
::netplay_ptr = NULL;
|
||||
netplay_ptr = NULL;
|
||||
}
|
||||
npd = NULL;
|
||||
}
|
||||
|
||||
void NetPlayDiag::OnChat(wxCommandEvent&)
|
||||
|
@ -351,7 +355,7 @@ void NetPlayDiag::OnChat(wxCommandEvent&)
|
|||
|
||||
if (s.Length())
|
||||
{
|
||||
::netplay_ptr->SendChatMessage(std::string(s.mb_str()));
|
||||
netplay_ptr->SendChatMessage(std::string(s.mb_str()));
|
||||
m_chat_text->AppendText(s.Prepend(wxT(" >> ")).Append(wxT('\n')));
|
||||
m_chat_msg_text->Clear();
|
||||
}
|
||||
|
@ -374,14 +378,14 @@ void NetPlayDiag::OnStart(wxCommandEvent&)
|
|||
}
|
||||
|
||||
if (path.length())
|
||||
::netplay_ptr->StartGame(path);
|
||||
netplay_ptr->StartGame(path);
|
||||
else
|
||||
PanicAlertT("Game not found!!");
|
||||
}
|
||||
|
||||
void NetPlayDiag::OnStop(wxCommandEvent&)
|
||||
{
|
||||
::netplay_ptr->StopGame();
|
||||
netplay_ptr->StopGame();
|
||||
}
|
||||
|
||||
void NetPlayDiag::BootGame(const std::string& filename)
|
||||
|
@ -430,7 +434,7 @@ void NetPlayDiag::OnMsgStopGame()
|
|||
|
||||
void NetPlayDiag::OnPadBuffHelp(wxCommandEvent&)
|
||||
{
|
||||
const u64 time = ((NetPlayServer*)::netplay_ptr)->CalculateMinimumBufferTime();
|
||||
const u64 time = ((NetPlayServer*)netplay_ptr)->CalculateMinimumBufferTime();
|
||||
std::ostringstream ss;
|
||||
ss << "< Calculated from pings: required buffer: "
|
||||
<< time * (60.0f/1000) << "(60fps) / "
|
||||
|
@ -442,11 +446,11 @@ void NetPlayDiag::OnPadBuffHelp(wxCommandEvent&)
|
|||
void NetPlayDiag::OnAdjustBuffer(wxCommandEvent& event)
|
||||
{
|
||||
const int val = ((wxSpinCtrl*)event.GetEventObject())->GetValue();
|
||||
((NetPlayServer*)::netplay_ptr)->AdjustPadBufferSize(val);
|
||||
((NetPlayServer*)netplay_ptr)->AdjustPadBufferSize(val);
|
||||
|
||||
std::ostringstream ss;
|
||||
ss << "< Pad Buffer: " << val << " >";
|
||||
::netplay_ptr->SendChatMessage(ss.str());
|
||||
netplay_ptr->SendChatMessage(ss.str());
|
||||
m_chat_text->AppendText(wxString(ss.str().c_str(), *wxConvCurrent).Append(wxT('\n')));
|
||||
}
|
||||
|
||||
|
@ -461,7 +465,7 @@ void NetPlayDiag::OnThread(wxCommandEvent& event)
|
|||
// player list
|
||||
m_playerids.clear();
|
||||
std::string tmps;
|
||||
::netplay_ptr->GetPlayerList(tmps, m_playerids);
|
||||
netplay_ptr->GetPlayerList(tmps, m_playerids);
|
||||
|
||||
const int selection = m_player_lbox->GetSelection();
|
||||
|
||||
|
@ -516,7 +520,7 @@ void NetPlayDiag::OnChangeGame(wxCommandEvent&)
|
|||
if (game_name.length())
|
||||
{
|
||||
m_selected_game = std::string(game_name.mb_str());
|
||||
::netplay_ptr->ChangeGame(m_selected_game);
|
||||
netplay_ptr->ChangeGame(m_selected_game);
|
||||
m_game_btn->SetLabel(game_name.Prepend(_(" Game : ")));
|
||||
}
|
||||
}
|
||||
|
@ -531,14 +535,14 @@ void NetPlayDiag::OnConfigPads(wxCommandEvent&)
|
|||
return;
|
||||
pid = m_playerids.at(pid);
|
||||
|
||||
if (false == ((NetPlayServer*)::netplay_ptr)->GetPadMapping(pid, mapping))
|
||||
if (false == ((NetPlayServer*)netplay_ptr)->GetPadMapping(pid, mapping))
|
||||
return;
|
||||
|
||||
PadMapDiag* const pmd = new PadMapDiag(this, mapping);
|
||||
pmd->ShowModal();
|
||||
pmd->Destroy();
|
||||
|
||||
if (false == ((NetPlayServer*)::netplay_ptr)->SetPadMapping(pid, mapping))
|
||||
if (false == ((NetPlayServer*)netplay_ptr)->SetPadMapping(pid, mapping))
|
||||
PanicAlertT("Could not set pads. The player left or the game is currently running!\n"
|
||||
"(setting pads while the game is running is not yet supported)");
|
||||
}
|
||||
|
|
|
@ -87,6 +87,8 @@ public:
|
|||
void OnMsgStartGame();
|
||||
void OnMsgStopGame();
|
||||
|
||||
static NetPlayDiag *&GetInstance() { return npd; };
|
||||
|
||||
private:
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
||||
|
@ -108,6 +110,8 @@ private:
|
|||
std::vector<int> m_playerids;
|
||||
|
||||
const CGameListCtrl* const m_game_list;
|
||||
|
||||
static NetPlayDiag* npd;
|
||||
};
|
||||
|
||||
DECLARE_EVENT_TYPE(wxEVT_THREAD, -1)
|
||||
|
|
Loading…
Reference in New Issue