[Project64] Create RenderWindow interface

This commit is contained in:
zilmar 2015-11-12 21:08:47 +11:00
parent 69383fcc7e
commit 93c76fe7dc
13 changed files with 1177 additions and 1189 deletions

View File

@ -22,7 +22,6 @@ m_SaveUsing((SAVE_CHIP_TYPE)g_Settings->LoadDword(Game_SaveChip)),
m_Plugins(Plugins), m_Plugins(Plugins),
m_SyncCPU(NULL), m_SyncCPU(NULL),
m_SyncPlugins(NULL), m_SyncPlugins(NULL),
m_SyncWindow(NULL),
m_MMU_VM(this, SavesReadOnly), m_MMU_VM(this, SavesReadOnly),
m_TLB(this), m_TLB(this),
m_Reg(this, this), m_Reg(this, this),
@ -75,11 +74,6 @@ CN64System::~CN64System()
delete m_SyncPlugins; delete m_SyncPlugins;
m_SyncPlugins = NULL; m_SyncPlugins = NULL;
} }
if (m_SyncWindow)
{
delete m_SyncWindow;
m_SyncWindow = NULL;
}
} }
void CN64System::ExternalEvent(SystemEvent action) void CN64System::ExternalEvent(SystemEvent action)
@ -269,10 +263,7 @@ bool CN64System::EmulationStarting(HANDLE hThread, DWORD ThreadId)
} }
catch (...) catch (...)
{ {
WriteTraceF(TraceError, __FUNCTION__ ": Exception caught\nFile: %s\nLine: %d", __FILE__, __LINE__); g_Notify->DisplayError(stdstr_f(__FUNCTION__ ": Exception caught\nFile: %s\nLine: %d", __FILE__, __LINE__).ToUTF16().c_str());
char Message[600];
sprintf(Message, __FUNCTION__ ": Exception caught\nFile: %s\nLine: %d", __FILE__, __LINE__);
MessageBox(NULL, Message, "Exception", MB_OK);
} }
} }
else else
@ -313,17 +304,15 @@ void CN64System::StartEmulation2(bool NewThread)
if (CpuType == CPU_SyncCores) if (CpuType == CPU_SyncCores)
{ {
if (g_Plugins->SyncWindow() == NULL)
{
g_Notify->BreakPoint(__FILEW__, __LINE__);
}
g_Notify->DisplayMessage(5, L"Copy Plugins"); g_Notify->DisplayMessage(5, L"Copy Plugins");
g_Plugins->CopyPlugins(g_Settings->LoadStringVal(Directory_PluginSync)); g_Plugins->CopyPlugins(g_Settings->LoadStringVal(Directory_PluginSync));
#if defined(WINDOWS_UI)
m_SyncWindow = new CMainGui(false);
m_SyncPlugins = new CPlugins(g_Settings->LoadStringVal(Directory_PluginSync)); m_SyncPlugins = new CPlugins(g_Settings->LoadStringVal(Directory_PluginSync));
m_SyncPlugins->SetRenderWindows(m_SyncWindow, m_SyncWindow); m_SyncPlugins->SetRenderWindows(g_Plugins->SyncWindow(), NULL);
m_SyncCPU = new CN64System(m_SyncPlugins, true); m_SyncCPU = new CN64System(m_SyncPlugins, true);
#else
g_Notify -> BreakPoint(__FILEW__, __LINE__);
#endif
} }
if (CpuType == CPU_Recompiler || CpuType == CPU_SyncCores) if (CpuType == CPU_Recompiler || CpuType == CPU_SyncCores)
@ -1158,7 +1147,7 @@ void CN64System::DumpSyncErrors(CN64System * SecondCPU)
Error.Log("Register, Recompiler, Interpter\r\n"); Error.Log("Register, Recompiler, Interpter\r\n");
#ifdef TEST_SP_TRACKING #ifdef TEST_SP_TRACKING
if (m_CurrentSP != GPR[29].UW[0]) { if (m_CurrentSP != GPR[29].UW[0]) {
Error.Log("m_CurrentSP,%X,%X\r\n",m_CurrentSP,GPR[29].UW[0]); Error.Log("m_CurrentSP,%X,%X\r\n", m_CurrentSP, GPR[29].UW[0]);
} }
#endif #endif
if (m_Reg.m_PROGRAM_COUNTER != SecondCPU->m_Reg.m_PROGRAM_COUNTER) { if (m_Reg.m_PROGRAM_COUNTER != SecondCPU->m_Reg.m_PROGRAM_COUNTER) {
@ -2058,7 +2047,7 @@ bool CN64System::WriteToProtectedMemory(uint32_t Address, int length)
{ {
g_Notify->BreakPoint(__FILEW__, __LINE__); g_Notify->BreakPoint(__FILEW__, __LINE__);
#ifdef tofix #ifdef tofix
return m_Recomp->ClearRecompCode_Phys(Address,length,CRecompiler::Remove_ProtectedMem); return m_Recomp->ClearRecompCode_Phys(Address, length, CRecompiler::Remove_ProtectedMem);
#endif #endif
} }
return false; return false;

View File

@ -123,7 +123,6 @@ private:
CPlugins * const m_Plugins; //The plugin container CPlugins * const m_Plugins; //The plugin container
CN64System * m_SyncCPU; CN64System * m_SyncCPU;
CPlugins * m_SyncPlugins; CPlugins * m_SyncPlugins;
CMainGui * m_SyncWindow;
CMipsMemoryVM m_MMU_VM; //Memory of the n64 CMipsMemoryVM m_MMU_VM; //Memory of the n64
CTLB m_TLB; CTLB m_TLB;
CRegisters m_Reg; CRegisters m_Reg;

View File

@ -51,7 +51,7 @@ bool CAudioPlugin::LoadFunctions(void)
return true; return true;
} }
bool CAudioPlugin::Initiate(CN64System * System, CMainGui * RenderWindow) bool CAudioPlugin::Initiate(CN64System * System, RenderWindow * Window)
{ {
struct AUDIO_INFO struct AUDIO_INFO
{ {
@ -88,7 +88,7 @@ bool CAudioPlugin::Initiate(CN64System * System, CMainGui * RenderWindow)
AUDIO_INFO Info = { 0 }; AUDIO_INFO Info = { 0 };
Info.hwnd = (HWND)RenderWindow->m_hMainWindow;; Info.hwnd = (HWND)Window->GetWindowHandle();
Info.hinst = GetModuleHandle(NULL); Info.hinst = GetModuleHandle(NULL);
Info.MemoryBswaped = TRUE; Info.MemoryBswaped = TRUE;
Info.CheckInterrupts = DummyCheckInterrupts; Info.CheckInterrupts = DummyCheckInterrupts;

View File

@ -9,6 +9,7 @@
* * * *
****************************************************************************/ ****************************************************************************/
#pragma once #pragma once
#include "Plugin Base.h"
class CAudioPlugin : public CPlugin class CAudioPlugin : public CPlugin
{ {
@ -17,7 +18,7 @@ public:
~CAudioPlugin(); ~CAudioPlugin();
void DacrateChanged(SYSTEM_TYPE Type); void DacrateChanged(SYSTEM_TYPE Type);
bool Initiate(CN64System * System, CMainGui * RenderWindow); bool Initiate(CN64System * System, RenderWindow * Window);
void(__cdecl *AiLenChanged)(void); void(__cdecl *AiLenChanged)(void);
uint32_t(__cdecl *AiReadLength)(void); uint32_t(__cdecl *AiReadLength)(void);

View File

@ -58,7 +58,7 @@ bool CControl_Plugin::LoadFunctions(void)
return true; return true;
} }
bool CControl_Plugin::Initiate(CN64System * System, CMainGui * RenderWindow) bool CControl_Plugin::Initiate(CN64System * System, RenderWindow * Window)
{ {
for (int32_t i = 0; i < 4; i++) for (int32_t i = 0; i < 4; i++)
{ {
@ -74,7 +74,7 @@ bool CControl_Plugin::Initiate(CN64System * System, CMainGui * RenderWindow)
void(__cdecl *InitiateControllers_1_0)(HWND hMainWindow, CONTROL Controls[4]); void(__cdecl *InitiateControllers_1_0)(HWND hMainWindow, CONTROL Controls[4]);
InitiateControllers_1_0 = (void(__cdecl *)(HWND, CONTROL *))GetProcAddress((HMODULE)m_hDll, "InitiateControllers"); InitiateControllers_1_0 = (void(__cdecl *)(HWND, CONTROL *))GetProcAddress((HMODULE)m_hDll, "InitiateControllers");
if (InitiateControllers_1_0 == NULL) { return false; } if (InitiateControllers_1_0 == NULL) { return false; }
InitiateControllers_1_0((HWND)RenderWindow->m_hMainWindow,m_PluginControllers); InitiateControllers_1_0((HWND)Window->GetWindowHandle(),m_PluginControllers);
m_Initialized = true; m_Initialized = true;
} }
else if (m_PluginInfo.Version >= 0x0101) else if (m_PluginInfo.Version >= 0x0101)
@ -104,7 +104,7 @@ bool CControl_Plugin::Initiate(CN64System * System, CMainGui * RenderWindow)
ControlInfo.Controls = m_PluginControllers; ControlInfo.Controls = m_PluginControllers;
ControlInfo.HEADER = (System == NULL ? Buffer : g_Rom->GetRomAddress()); ControlInfo.HEADER = (System == NULL ? Buffer : g_Rom->GetRomAddress());
ControlInfo.hinst = GetModuleHandle(NULL); ControlInfo.hinst = GetModuleHandle(NULL);
ControlInfo.hMainWindow = (HWND)RenderWindow->m_hMainWindow; ControlInfo.hMainWindow = (HWND)Window->GetWindowHandle();
ControlInfo.MemoryBswaped = TRUE; ControlInfo.MemoryBswaped = TRUE;
InitiateControllers_1_1(&ControlInfo); InitiateControllers_1_1(&ControlInfo);

View File

@ -9,6 +9,7 @@
* * * *
****************************************************************************/ ****************************************************************************/
#pragma once #pragma once
#include "Plugin Base.h"
#pragma warning(push) #pragma warning(push)
#pragma warning(disable : 4201) // warning C4201: nonstandard extension used : nameless struct/union #pragma warning(disable : 4201) // warning C4201: nonstandard extension used : nameless struct/union
@ -87,7 +88,7 @@ public:
CControl_Plugin(void); CControl_Plugin(void);
~CControl_Plugin(); ~CControl_Plugin();
bool Initiate(CN64System * System, CMainGui * RenderWindow); bool Initiate(CN64System * System, RenderWindow * Window);
void SetControl(CControl_Plugin const * const Plugin); void SetControl(CControl_Plugin const * const Plugin);
void UpdateKeys(void); void UpdateKeys(void);

View File

@ -93,7 +93,7 @@ bool CGfxPlugin::LoadFunctions(void)
return true; return true;
} }
bool CGfxPlugin::Initiate(CN64System * System, CMainGui * RenderWindow) bool CGfxPlugin::Initiate(CN64System * System, RenderWindow * Window)
{ {
if (m_Initialized) if (m_Initialized)
{ {
@ -153,8 +153,8 @@ bool CGfxPlugin::Initiate(CN64System * System, CMainGui * RenderWindow)
GFX_INFO Info = { 0 }; GFX_INFO Info = { 0 };
Info.MemoryBswaped = TRUE; Info.MemoryBswaped = TRUE;
Info.hWnd = (HWND)RenderWindow->m_hMainWindow; Info.hWnd = (HWND)Window->GetWindowHandle();
Info.hStatusBar = (HWND)RenderWindow->m_hStatusWnd; Info.hStatusBar = (HWND)Window->GetStatusBar();
Info.CheckInterrupts = DummyCheckInterrupts; Info.CheckInterrupts = DummyCheckInterrupts;
// We are initializing the plugin before any rom is loaded so we do not have any correct // We are initializing the plugin before any rom is loaded so we do not have any correct

View File

@ -9,6 +9,7 @@
* * * *
****************************************************************************/ ****************************************************************************/
#pragma once #pragma once
#include "Plugin Base.h"
class CGfxPlugin : public CPlugin class CGfxPlugin : public CPlugin
{ {
@ -52,7 +53,7 @@ public:
~CGfxPlugin(); ~CGfxPlugin();
bool LoadFunctions(void); bool LoadFunctions(void);
bool Initiate(CN64System * System, CMainGui * RenderWindow); bool Initiate(CN64System * System, RenderWindow * Window);
void(__cdecl *CaptureScreen) (const char *); void(__cdecl *CaptureScreen) (const char *);
void(__cdecl *ChangeWindow) (void); void(__cdecl *ChangeWindow) (void);

View File

@ -9,9 +9,12 @@
* * * *
****************************************************************************/ ****************************************************************************/
#include "stdafx.h" #include "stdafx.h"
#include <Common\path.h>
#include "Plugin Class.h"
CPlugins::CPlugins(const stdstr & PluginDir) : CPlugins::CPlugins(const stdstr & PluginDir) :
m_RenderWindow(NULL), m_DummyWindow(NULL), m_MainWindow(NULL),
m_SyncWindow(NULL),
m_PluginDir(PluginDir), m_PluginDir(PluginDir),
m_Gfx(NULL), m_Gfx(NULL),
m_Audio(NULL), m_Audio(NULL),
@ -215,10 +218,10 @@ void CPlugins::DestroyControlPlugin(void)
// g_Settings->UnknownSetting_CTRL = NULL; // g_Settings->UnknownSetting_CTRL = NULL;
} }
void CPlugins::SetRenderWindows( CMainGui * RenderWindow, CMainGui * DummyWindow ) void CPlugins::SetRenderWindows(RenderWindow * MainWindow, RenderWindow * SyncWindow)
{ {
m_RenderWindow = RenderWindow; m_MainWindow = MainWindow;
m_DummyWindow = DummyWindow; m_SyncWindow = SyncWindow;
} }
void CPlugins::RomOpened(void) void CPlugins::RomOpened(void)
@ -247,13 +250,13 @@ bool CPlugins::Initiate(CN64System * System)
if (m_Control == NULL) { return false; } if (m_Control == NULL) { return false; }
WriteTrace(TraceGfxPlugin, __FUNCTION__ ": Gfx Initiate Starting"); WriteTrace(TraceGfxPlugin, __FUNCTION__ ": Gfx Initiate Starting");
if (!m_Gfx->Initiate(System,m_RenderWindow)) { return false; } if (!m_Gfx->Initiate(System, m_MainWindow)) { return false; }
WriteTrace(TraceGfxPlugin, __FUNCTION__ ": Gfx Initiate Done"); WriteTrace(TraceGfxPlugin, __FUNCTION__ ": Gfx Initiate Done");
WriteTrace(TraceDebug, __FUNCTION__ ": Audio Initiate Starting"); WriteTrace(TraceDebug, __FUNCTION__ ": Audio Initiate Starting");
if (!m_Audio->Initiate(System,m_RenderWindow)) { return false; } if (!m_Audio->Initiate(System, m_MainWindow)) { return false; }
WriteTrace(TraceDebug, __FUNCTION__ ": Audio Initiate Done"); WriteTrace(TraceDebug, __FUNCTION__ ": Audio Initiate Done");
WriteTrace(TraceDebug, __FUNCTION__ ": Control Initiate Starting"); WriteTrace(TraceDebug, __FUNCTION__ ": Control Initiate Starting");
if (!m_Control->Initiate(System,m_RenderWindow)) { return false; } if (!m_Control->Initiate(System, m_MainWindow)) { return false; }
WriteTrace(TraceDebug, __FUNCTION__ ": Control Initiate Done"); WriteTrace(TraceDebug, __FUNCTION__ ": Control Initiate Done");
WriteTrace(TraceRSP, __FUNCTION__ ": RSP Initiate Starting"); WriteTrace(TraceRSP, __FUNCTION__ ": RSP Initiate Starting");
if (!m_RSP->Initiate(this, System)) { return false; } if (!m_RSP->Initiate(this, System)) { return false; }
@ -264,12 +267,7 @@ bool CPlugins::Initiate(CN64System * System)
bool CPlugins::ResetInUiThread(CN64System * System) bool CPlugins::ResetInUiThread(CN64System * System)
{ {
#if defined(WINDOWS_UI) return m_MainWindow->ResetPluginsInUiThread(this, System);
return m_RenderWindow->ResetPlugins(this, System);
#else
g_Notify -> BreakPoint(__FILEW__, __LINE__);
return false;
#endif
} }
bool CPlugins::Reset(CN64System * System) bool CPlugins::Reset(CN64System * System)
@ -295,19 +293,19 @@ bool CPlugins::Reset(CN64System * System)
if (m_Gfx && bGfxChange) if (m_Gfx && bGfxChange)
{ {
WriteTrace(TraceGfxPlugin, __FUNCTION__ ": Gfx Initiate Starting"); WriteTrace(TraceGfxPlugin, __FUNCTION__ ": Gfx Initiate Starting");
if (!m_Gfx->Initiate(System,m_RenderWindow)) { return false; } if (!m_Gfx->Initiate(System, m_MainWindow)) { return false; }
WriteTrace(TraceGfxPlugin, __FUNCTION__ ": Gfx Initiate Done"); WriteTrace(TraceGfxPlugin, __FUNCTION__ ": Gfx Initiate Done");
} }
if (m_Audio && bAudioChange) if (m_Audio && bAudioChange)
{ {
WriteTrace(TraceDebug, __FUNCTION__ ": Audio Initiate Starting"); WriteTrace(TraceDebug, __FUNCTION__ ": Audio Initiate Starting");
if (!m_Audio->Initiate(System,m_RenderWindow)) { return false; } if (!m_Audio->Initiate(System, m_MainWindow)) { return false; }
WriteTrace(TraceDebug, __FUNCTION__ ": Audio Initiate Done"); WriteTrace(TraceDebug, __FUNCTION__ ": Audio Initiate Done");
} }
if (m_Control && bContChange) if (m_Control && bContChange)
{ {
WriteTrace(TraceDebug, __FUNCTION__ ": Control Initiate Starting"); WriteTrace(TraceDebug, __FUNCTION__ ": Control Initiate Starting");
if (!m_Control->Initiate(System,m_RenderWindow)) { return false; } if (!m_Control->Initiate(System, m_MainWindow)) { return false; }
WriteTrace(TraceDebug, __FUNCTION__ ": Control Initiate Done"); WriteTrace(TraceDebug, __FUNCTION__ ": Control Initiate Done");
} }
if (m_RSP && bRspChange) if (m_RSP && bRspChange)

View File

@ -81,8 +81,16 @@ enum PLUGIN_TYPE
}; };
class CSettings; class CSettings;
class CMainGui;
class CGfxPlugin; class CAudioPlugin; class CRSP_Plugin; class CControl_Plugin; class CGfxPlugin; class CAudioPlugin; class CRSP_Plugin; class CControl_Plugin;
class CN64System;
class CPlugins;
__interface RenderWindow
{
bool ResetPluginsInUiThread(CPlugins * plugins, CN64System * System) = 0;
void * GetWindowHandle(void) const = 0;
void * GetStatusBar(void) const = 0;
};
class CPlugins : class CPlugins :
private CDebugSettings private CDebugSettings
@ -95,7 +103,7 @@ public:
bool Initiate(CN64System * System); bool Initiate(CN64System * System);
void RomOpened(void); void RomOpened(void);
void RomClosed(void); void RomClosed(void);
void SetRenderWindows ( CMainGui * RenderWindow, CMainGui * DummyWindow ); void SetRenderWindows(RenderWindow * MainWindow, RenderWindow * SyncWindow);
void ConfigPlugin(uint32_t hParent, PLUGIN_TYPE Type); void ConfigPlugin(uint32_t hParent, PLUGIN_TYPE Type);
bool CopyPlugins(const stdstr & DstDir) const; bool CopyPlugins(const stdstr & DstDir) const;
void CreatePlugins(void); void CreatePlugins(void);
@ -108,6 +116,8 @@ public:
inline CRSP_Plugin * RSP(void) const { return m_RSP; } inline CRSP_Plugin * RSP(void) const { return m_RSP; }
inline CControl_Plugin * Control(void) const { return m_Control; } inline CControl_Plugin * Control(void) const { return m_Control; }
inline RenderWindow * MainWindow(void) const { return m_MainWindow; }
inline RenderWindow * SyncWindow(void) const { return m_SyncWindow; }
private: private:
CPlugins(void); // Disable default constructor CPlugins(void); // Disable default constructor
@ -121,8 +131,8 @@ private:
static void PluginChanged(CPlugins * _this); static void PluginChanged(CPlugins * _this);
CMainGui * m_RenderWindow; RenderWindow * m_MainWindow;
CMainGui * m_DummyWindow; RenderWindow * m_SyncWindow;
stdstr const m_PluginDir; stdstr const m_PluginDir;

View File

@ -93,7 +93,6 @@ bool CMainGui::RegisterWinClass(void)
return true; return true;
} }
void RomBowserEnabledChanged(CMainGui * Gui) void RomBowserEnabledChanged(CMainGui * Gui)
{ {
if (Gui && g_Settings->LoadBool(RomBrowser_Enabled)) if (Gui && g_Settings->LoadBool(RomBrowser_Enabled))
@ -154,7 +153,7 @@ void CMainGui::AboutBox(void)
void CMainGui::AboutIniBox(void) void CMainGui::AboutIniBox(void)
{ {
DialogBoxParam(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_About_Ini), m_hMainWindow, (DLGPROC)AboutIniBoxProc,(LPARAM)this); DialogBoxParam(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_About_Ini), m_hMainWindow, (DLGPROC)AboutIniBoxProc, (LPARAM)this);
} }
DWORD CALLBACK AboutIniBoxProc(HWND hDlg, DWORD uMsg, DWORD wParam, DWORD /*lParam*/) DWORD CALLBACK AboutIniBoxProc(HWND hDlg, DWORD uMsg, DWORD wParam, DWORD /*lParam*/)
@ -168,7 +167,7 @@ DWORD CALLBACK AboutIniBoxProc(HWND hDlg, DWORD uMsg, DWORD wParam, DWORD /*lPar
//Title //Title
LONG_PTR originalWndProc = GetWindowLongPtrW(hDlg, GWLP_WNDPROC); LONG_PTR originalWndProc = GetWindowLongPtrW(hDlg, GWLP_WNDPROC);
SetWindowLongPtrW(hDlg, GWLP_WNDPROC, (LONG_PTR) DefWindowProcW); SetWindowLongPtrW(hDlg, GWLP_WNDPROC, (LONG_PTR)DefWindowProcW);
SetWindowTextW(hDlg, GS(INI_TITLE)); SetWindowTextW(hDlg, GS(INI_TITLE));
SetWindowLongPtrW(hDlg, GWLP_WNDPROC, originalWndProc); SetWindowLongPtrW(hDlg, GWLP_WNDPROC, originalWndProc);
@ -276,7 +275,7 @@ DWORD CALLBACK AboutIniBoxProc(HWND hDlg, DWORD uMsg, DWORD wParam, DWORD /*lPar
return TRUE; return TRUE;
} }
bool CMainGui::ResetPlugins (CPlugins * plugins, CN64System * System) bool CMainGui::ResetPluginsInUiThread(CPlugins * plugins, CN64System * System)
{ {
RESET_PLUGIN info; RESET_PLUGIN info;
info.system = System; info.system = System;
@ -418,7 +417,7 @@ void CMainGui::Show(bool Visible)
m_MakingVisible = false; m_MakingVisible = false;
} }
void CMainGui::EnterLogOptions (void) void CMainGui::EnterLogOptions(void)
{ {
::EnterLogOptions(m_hMainWindow); ::EnterLogOptions(m_hMainWindow);
} }

View File

@ -11,6 +11,7 @@
#pragma once #pragma once
#include <Project64\N64 System\Debugger\debugger.h> #include <Project64\N64 System\Debugger\debugger.h>
#include <Project64\Plugins\Plugin Class.h>
class CGfxPlugin; //Plugin that controls the rendering class CGfxPlugin; //Plugin that controls the rendering
class CAudioPlugin; //Plugin for audio, need the hwnd class CAudioPlugin; //Plugin for audio, need the hwnd
@ -28,6 +29,7 @@ enum
}; };
class CMainGui : class CMainGui :
public RenderWindow,
public CRomBrowser, public CRomBrowser,
public CDebuggerUI, public CDebuggerUI,
private CGuiSettings private CGuiSettings
@ -80,10 +82,11 @@ public:
void AboutBox(void); void AboutBox(void);
//Plugins //Plugins
bool ResetPlugins ( CPlugins * plugins, CN64System * System ); bool ResetPluginsInUiThread(CPlugins * plugins, CN64System * System);
//Get Window Handle //Get Window Handle
inline HWND GetHandle ( void ) const { return m_hMainWindow; } void * GetWindowHandle(void) const { return m_hMainWindow; }
void * GetStatusBar(void) const { return m_hStatusWnd; }
private: private:
CMainGui(void); // Disable default constructor CMainGui(void); // Disable default constructor

View File

@ -1,16 +1,16 @@
#include "stdafx.h" #include "stdafx.h"
#include <time.h> #include <time.h>
CNotification & Notify ( void ) CNotification & Notify(void)
{ {
static CNotification g_Notify; static CNotification g_Notify;
return g_Notify; return g_Notify;
} }
CNotification::CNotification() : CNotification::CNotification() :
m_hWnd(NULL), m_hWnd(NULL),
m_gfxPlugin(NULL), m_gfxPlugin(NULL),
m_NextMsg(0) m_NextMsg(0)
{ {
_tzset(); _tzset();
} }
@ -20,12 +20,12 @@ void CNotification::AppInitDone(void)
CNotificationSettings::RegisterNotifications(); CNotificationSettings::RegisterNotifications();
} }
void CNotification::SetMainWindow ( CMainGui * Gui ) void CNotification::SetMainWindow(CMainGui * Gui)
{ {
m_hWnd = Gui; m_hWnd = Gui;
} }
void CNotification::WindowMode ( void ) const void CNotification::WindowMode(void) const
{ {
static bool InsideFunc = false; static bool InsideFunc = false;
if (InsideFunc) if (InsideFunc)
@ -59,13 +59,13 @@ void CNotification::DisplayError(const wchar_t * Message) const
stdstr TraceMessage; stdstr TraceMessage;
TraceMessage.FromUTF16(Message); TraceMessage.FromUTF16(Message);
WriteTrace(TraceError,TraceMessage.c_str()); WriteTrace(TraceError, TraceMessage.c_str());
WindowMode(); WindowMode();
HWND Parent = NULL; HWND Parent = NULL;
if (m_hWnd) if (m_hWnd)
{ {
Parent = m_hWnd->GetHandle(); Parent = reinterpret_cast<HWND>(m_hWnd->GetWindowHandle());
} }
MessageBoxW(Parent, Message, GS(MSG_MSGBOX_TITLE), MB_OK | MB_ICONERROR | MB_SETFOREGROUND); MessageBoxW(Parent, Message, GS(MSG_MSGBOX_TITLE), MB_OK | MB_ICONERROR | MB_SETFOREGROUND);
} }
@ -100,40 +100,32 @@ void CNotification::DisplayMessage(int DisplayTime, const wchar_t * Message) con
{ {
if (m_gfxPlugin && m_gfxPlugin->DrawStatus) if (m_gfxPlugin && m_gfxPlugin->DrawStatus)
{ {
WriteTrace(TraceGfxPlugin,__FUNCTION__ ": DrawStatus - Starting"); WriteTrace(TraceGfxPlugin, __FUNCTION__ ": DrawStatus - Starting");
stdstr PluginMessage; stdstr PluginMessage;
PluginMessage.FromUTF16(Message); PluginMessage.FromUTF16(Message);
m_gfxPlugin->DrawStatus(PluginMessage.c_str(), FALSE); m_gfxPlugin->DrawStatus(PluginMessage.c_str(), FALSE);
WriteTrace(TraceGfxPlugin,__FUNCTION__ ": DrawStatus - Done"); WriteTrace(TraceGfxPlugin, __FUNCTION__ ": DrawStatus - Done");
} }
} }
else else
{ {
#if defined(WINDOWS_UI)
m_hWnd->SetStatusText(0, Message); m_hWnd->SetStatusText(0, Message);
#else
g_Notify -> BreakPoint(__FILEW__, __LINE__);
#endif
} }
} }
void CNotification::DisplayMessage2 ( const wchar_t * Message ) const void CNotification::DisplayMessage2(const wchar_t * Message) const
{ {
if (!m_hWnd) { return; } if (!m_hWnd) { return; }
#if defined(WINDOWS_UI)
m_hWnd->SetStatusText(1, Message); m_hWnd->SetStatusText(1, Message);
#else
g_Notify -> BreakPoint(__FILEW__, __LINE__);
#endif
} }
void CNotification::SetGfxPlugin( CGfxPlugin * Plugin ) void CNotification::SetGfxPlugin(CGfxPlugin * Plugin)
{ {
m_gfxPlugin = Plugin; m_gfxPlugin = Plugin;
} }
void CNotification::SetWindowCaption (const wchar_t * Caption) void CNotification::SetWindowCaption(const wchar_t * Caption)
{ {
static const size_t TITLE_SIZE = 256; static const size_t TITLE_SIZE = 256;
wchar_t WinTitle[TITLE_SIZE]; wchar_t WinTitle[TITLE_SIZE];
@ -143,7 +135,7 @@ void CNotification::SetWindowCaption (const wchar_t * Caption)
#if defined(WINDOWS_UI) #if defined(WINDOWS_UI)
m_hWnd->Caption(WinTitle); m_hWnd->Caption(WinTitle);
#else #else
g_Notify -> BreakPoint(__FILEW__, __LINE__); g_Notify->BreakPoint(__FILEW__, __LINE__);
#endif #endif
} }
@ -157,12 +149,12 @@ void CNotification::FatalError(const wchar_t * Message) const
WindowMode(); WindowMode();
HWND Parent = NULL; HWND Parent = NULL;
if (m_hWnd) { Parent = reinterpret_cast<HWND>(m_hWnd->GetHandle()); } if (m_hWnd) { Parent = reinterpret_cast<HWND>(m_hWnd->GetWindowHandle()); }
MessageBoxW(Parent, Message, L"Error", MB_OK | MB_ICONERROR | MB_SETFOREGROUND); MessageBoxW(Parent, Message, L"Error", MB_OK | MB_ICONERROR | MB_SETFOREGROUND);
ExitThread(0); ExitThread(0);
} }
void CNotification::AddRecentDir ( const char * RomDir ) void CNotification::AddRecentDir(const char * RomDir)
{ {
//Validate the passed string //Validate the passed string
if (HIWORD(RomDir) == NULL) { return; } if (HIWORD(RomDir) == NULL) { return; }
@ -171,9 +163,9 @@ void CNotification::AddRecentDir ( const char * RomDir )
size_t MaxRememberedDirs = g_Settings->LoadDword(Directory_RecentGameDirCount); size_t MaxRememberedDirs = g_Settings->LoadDword(Directory_RecentGameDirCount);
strlist RecentDirs; strlist RecentDirs;
size_t i; size_t i;
for (i = 0; i < MaxRememberedDirs; i ++ ) for (i = 0; i < MaxRememberedDirs; i++)
{ {
stdstr RecentDir = g_Settings->LoadStringIndex(Directory_RecentGameDirIndex,i); stdstr RecentDir = g_Settings->LoadStringIndex(Directory_RecentGameDirIndex, i);
if (RecentDir.empty()) if (RecentDir.empty())
{ {
break; break;
@ -185,7 +177,7 @@ void CNotification::AddRecentDir ( const char * RomDir )
strlist::iterator iter; strlist::iterator iter;
for (iter = RecentDirs.begin(); iter != RecentDirs.end(); iter++) for (iter = RecentDirs.begin(); iter != RecentDirs.end(); iter++)
{ {
if (_stricmp(RomDir,iter->c_str()) != 0) if (_stricmp(RomDir, iter->c_str()) != 0)
{ {
continue; continue;
} }
@ -200,11 +192,11 @@ void CNotification::AddRecentDir ( const char * RomDir )
for (i = 0, iter = RecentDirs.begin(); iter != RecentDirs.end(); iter++, i++) for (i = 0, iter = RecentDirs.begin(); iter != RecentDirs.end(); iter++, i++)
{ {
g_Settings->SaveStringIndex(Directory_RecentGameDirIndex,i,*iter); g_Settings->SaveStringIndex(Directory_RecentGameDirIndex, i, *iter);
} }
} }
void CNotification::AddRecentRom ( const char * ImagePath ) void CNotification::AddRecentRom(const char * ImagePath)
{ {
if (HIWORD(ImagePath) == NULL) { return; } if (HIWORD(ImagePath) == NULL) { return; }
@ -212,9 +204,9 @@ void CNotification::AddRecentRom ( const char * ImagePath )
size_t MaxRememberedFiles = g_Settings->LoadDword(File_RecentGameFileCount); size_t MaxRememberedFiles = g_Settings->LoadDword(File_RecentGameFileCount);
strlist RecentGames; strlist RecentGames;
size_t i; size_t i;
for (i = 0; i < MaxRememberedFiles; i ++ ) for (i = 0; i < MaxRememberedFiles; i++)
{ {
stdstr RecentGame = g_Settings->LoadStringIndex(File_RecentGameFileIndex,i); stdstr RecentGame = g_Settings->LoadStringIndex(File_RecentGameFileIndex, i);
if (RecentGame.empty()) if (RecentGame.empty())
{ {
break; break;
@ -226,7 +218,7 @@ void CNotification::AddRecentRom ( const char * ImagePath )
strlist::iterator iter; strlist::iterator iter;
for (iter = RecentGames.begin(); iter != RecentGames.end(); iter++) for (iter = RecentGames.begin(); iter != RecentGames.end(); iter++)
{ {
if (_stricmp(ImagePath,iter->c_str()) != 0) if (_stricmp(ImagePath, iter->c_str()) != 0)
{ {
continue; continue;
} }
@ -241,28 +233,28 @@ void CNotification::AddRecentRom ( const char * ImagePath )
for (i = 0, iter = RecentGames.begin(); iter != RecentGames.end(); iter++, i++) for (i = 0, iter = RecentGames.begin(); iter != RecentGames.end(); iter++, i++)
{ {
g_Settings->SaveStringIndex(File_RecentGameFileIndex,i,*iter); g_Settings->SaveStringIndex(File_RecentGameFileIndex, i, *iter);
} }
} }
void CNotification::RefreshMenu ( void ) void CNotification::RefreshMenu(void)
{ {
if (m_hWnd == NULL) { return; } if (m_hWnd == NULL) { return; }
#if defined(WINDOWS_UI) #if defined(WINDOWS_UI)
m_hWnd->RefreshMenu(); m_hWnd->RefreshMenu();
#else #else
g_Notify -> BreakPoint(__FILEW__, __LINE__); g_Notify->BreakPoint(__FILEW__, __LINE__);
#endif #endif
} }
void CNotification::HideRomBrowser ( void ) void CNotification::HideRomBrowser(void)
{ {
if (m_hWnd == NULL) { return; } if (m_hWnd == NULL) { return; }
m_hWnd->HideRomList(); m_hWnd->HideRomList();
} }
void CNotification::ShowRomBrowser ( void ) void CNotification::ShowRomBrowser(void)
{ {
if (m_hWnd == NULL) { return; } if (m_hWnd == NULL) { return; }
if (g_Settings->LoadDword(RomBrowser_Enabled)) if (g_Settings->LoadDword(RomBrowser_Enabled))
@ -273,47 +265,42 @@ void CNotification::ShowRomBrowser ( void )
} }
} }
void CNotification::BringToTop ( void ) void CNotification::BringToTop(void)
{ {
if (m_hWnd == NULL) { return; } if (m_hWnd == NULL) { return; }
#if defined(WINDOWS_UI) #if defined(WINDOWS_UI)
m_hWnd->BringToTop(); m_hWnd->BringToTop();
#else #else
g_Notify -> BreakPoint(__FILEW__, __LINE__); g_Notify->BreakPoint(__FILEW__, __LINE__);
#endif #endif
} }
void CNotification::MakeWindowOnTop ( bool OnTop ) void CNotification::MakeWindowOnTop(bool OnTop)
{ {
if (m_hWnd == NULL) { return; } if (m_hWnd == NULL) { return; }
#if defined(WINDOWS_UI) #if defined(WINDOWS_UI)
m_hWnd->MakeWindowOnTop(OnTop); m_hWnd->MakeWindowOnTop(OnTop);
#else #else
g_Notify -> BreakPoint(__FILEW__, __LINE__); g_Notify->BreakPoint(__FILEW__, __LINE__);
#endif #endif
} }
void CNotification::ChangeFullScreen ( void ) const void CNotification::ChangeFullScreen(void) const
{ {
if (m_hWnd == NULL) { return; } if (m_hWnd == NULL) { return; }
SendMessage((HWND)(m_hWnd->GetHandle()),WM_COMMAND,MAKELPARAM(ID_OPTIONS_FULLSCREEN2,false),0); SendMessage((HWND)(m_hWnd->GetWindowHandle()), WM_COMMAND, MAKELPARAM(ID_OPTIONS_FULLSCREEN2, false), 0);
} }
bool CNotification::ProcessGuiMessages ( void ) const bool CNotification::ProcessGuiMessages(void) const
{ {
if (m_hWnd == NULL) { return false; } if (m_hWnd == NULL) { return false; }
#if defined(WINDOWS_UI)
return m_hWnd->ProcessGuiMessages(); return m_hWnd->ProcessGuiMessages();
#else
g_Notify -> BreakPoint(__FILEW__, __LINE__);
return false;
#endif
} }
void CNotification::BreakPoint ( const wchar_t * FileName, const int LineNumber ) void CNotification::BreakPoint(const wchar_t * FileName, const int LineNumber)
{ {
if (g_Settings->LoadBool(Debugger_Enabled)) if (g_Settings->LoadBool(Debugger_Enabled))
{ {