Merge pull request #776 from Nekotekina/master

GUI callbacks
This commit is contained in:
Alexandro Sánchez Bach 2014-08-25 04:39:38 +02:00
commit 3c562afd49
35 changed files with 385 additions and 326 deletions

View file

@ -1,92 +1,10 @@
#include "stdafx.h"
#include <wx/glcanvas.h>
#include "Gui/GLGSFrame.h"
#include "Emu/Io/Null/NullKeyboardHandler.h"
#include "Emu/Io/Windows/WindowsKeyboardHandler.h"
#include "Emu/Io/Null/NullMouseHandler.h"
#include "Emu/Io/Windows/WindowsMouseHandler.h"
#include "Emu/Io/Null/NullPadHandler.h"
#include "Emu/Io/Windows/WindowsPadHandler.h"
#if defined(_WIN32)
#include "Emu/Io/XInput/XInputPadHandler.h"
#endif
#ifndef _WIN32
#include <dirent.h>
#endif
rCanvas::rCanvas(void *parent)
{
handle = static_cast<void*>(new wxGLCanvas(static_cast<wxWindow *>(parent),wxID_ANY,NULL));
}
rCanvas::~rCanvas()
{
delete static_cast<wxGLCanvas*>(handle);
}
bool rCanvas::SetCurrent(void *ctx)
{
return static_cast<wxGLCanvas*>(handle)->SetCurrent(*static_cast<wxGLContext *>(ctx));
}
rGLFrame::rGLFrame()
{
handle = static_cast<void*>(new GLGSFrame());
}
rGLFrame::~rGLFrame()
{
delete static_cast<GLGSFrame*>(handle);
}
void rGLFrame::Close()
{
static_cast<GLGSFrame*>(handle)->Close();
}
bool rGLFrame::IsShown()
{
return static_cast<GLGSFrame*>(handle)->IsShown();
}
void rGLFrame::Hide()
{
static_cast<GLGSFrame*>(handle)->Hide();
}
void rGLFrame::Show()
{
static_cast<GLGSFrame*>(handle)->Show();
}
void *rGLFrame::GetNewContext()
{
return static_cast<void *>(new wxGLContext(
static_cast<GLGSFrame*>(handle)->GetCanvas()
));
}
void rGLFrame::Flip(void *ctx)
{
static_cast<GLGSFrame*>(handle)->Flip(
static_cast<wxGLContext*>(ctx));
}
void rGLFrame::SetCurrent(void *ctx)
{
static_cast<GLGSFrame*>(handle)->GetCanvas()->SetCurrent(*static_cast<wxGLContext*>(ctx));
}
#include "rPlatform.h"
rImage::rImage()
{
@ -114,31 +32,6 @@ void rImage::SaveFile(const std::string& name, rImageType type)
}
}
int rPlatform::getKeyboardHandlerCount()
{
return 2;
}
KeyboardHandlerBase *rPlatform::getKeyboardHandler(int i)
{
switch (i)
{
case 0:
return new NullKeyboardHandler();
break;
case 1:
return new WindowsKeyboardHandler();
break;
default:
return new NullKeyboardHandler();
}
}
int rPlatform::getMouseHandlerCount()
{
return 2;
}
std::string rPlatform::getConfigDir()
{
static std::string dir = ".";
@ -159,49 +52,3 @@ std::string rPlatform::getConfigDir()
}
return dir;
}
MouseHandlerBase *rPlatform::getMouseHandler(int i)
{
switch (i)
{
case 0:
return new NullMouseHandler();
break;
case 1:
return new WindowsMouseHandler();
break;
default:
return new NullMouseHandler();
}
}
int rPlatform::getPadHandlerCount()
{
#if defined(_WIN32)
return 3;
#else
return 2;
#endif
}
PadHandlerBase *rPlatform::getPadHandler(int i)
{
switch (i)
{
case 0:
return new NullPadHandler();
break;
case 1:
return new WindowsPadHandler();
break;
#if defined(_WIN32)
case 2:
return new XInputPadHandler();
break;
#endif
default:
return new NullPadHandler();
}
}

View file

@ -2,50 +2,8 @@
#include <vector>
#include <string>
#include "Emu/Io/Null/NullKeyboardHandler.h"
#include "Emu/Io/Null/NullMouseHandler.h"
#include "Emu/Io/Null/NullPadHandler.h"
struct rCanvas
{
rCanvas(void *parent);
rCanvas(const rCanvas &) = delete;
~rCanvas();
/*rGLContext*/void *GetCurrent();
bool SetCurrent(/*rGLContext &*/ void *ctx);
void *handle;
};
struct rGLFrame
{
rGLFrame();
rGLFrame(const rGLFrame &) = delete;
~rGLFrame();
void Close();
bool IsShown();
void Hide();
void Show();
void *handle;
void SetCurrent( void *ctx);
void *GetNewContext();
void Flip(/*rGLContext*/void *ctx);
};
struct rPlatform
{
rGLFrame *getGLGSFrame();
static rPlatform &getPlatform();
static int getKeyboardHandlerCount();
static KeyboardHandlerBase *getKeyboardHandler(int i);
static int getMouseHandlerCount();
static MouseHandlerBase *getMouseHandler(int i);
static int getPadHandlerCount();
static PadHandlerBase *getPadHandler(int i);
static std::string getConfigDir();
};

View file

@ -349,8 +349,8 @@ void SPUThread::EnqMfcCmd(MFCReg& MFCArgs)
ProcessCmd(cmd, tag, lsa, ea, size);
MFCArgs.CMDStatus.SetValue(MFC_PPU_DMA_CMD_ENQUEUE_SUCCESSFUL);
}
break;
}
case MFC_PUTL_CMD:
case MFC_PUTRL_CMD: // ???
@ -364,8 +364,8 @@ void SPUThread::EnqMfcCmd(MFCReg& MFCArgs)
lsa, ea, tag, size, cmd);
ListCmd(lsa, ea, tag, size, cmd, MFCArgs);
}
break;
}
case MFC_GETLLAR_CMD:
case MFC_PUTLLC_CMD:
@ -433,7 +433,7 @@ void SPUThread::EnqMfcCmd(MFCReg& MFCArgs)
changed, mask, op, cmd, lsa, ea, tag, size);
Emu.Pause();
}
break;
}
}
@ -478,8 +478,8 @@ void SPUThread::EnqMfcCmd(MFCReg& MFCArgs)
}
R_ADDR = 0;
}
}
break;
}
default:
LOG_ERROR(Log::SPU, "Unknown MFC cmd. (opcode=0x%x, cmd=0x%x, lsa = 0x%x, ea = 0x%llx, tag = 0x%x, size = 0x%x)",

View file

@ -1,7 +1,14 @@
#include "stdafx.h"
#include "rpcs3.h"
#include "DbgCommand.h"
void SendDbgCommand(DbgCommand id, CPUThread* thr )
SendDbgCommandCb SendDbgCommandFunc = nullptr;
void SendDbgCommand(DbgCommand id, CPUThread* t)
{
wxGetApp().SendDbgCommand(id, thr);
SendDbgCommandFunc(id, t);
}
void SetSendDbgCommandCallback(SendDbgCommandCb cb)
{
SendDbgCommandFunc = cb;
}

View file

@ -37,4 +37,8 @@ enum DbgCommand
DID_LAST_COMMAND,
};
typedef void(*SendDbgCommandCb)(DbgCommand id, CPUThread* t);
void SetSendDbgCommandCallback(SendDbgCommandCb value);
void SendDbgCommand(DbgCommand id, CPUThread* thr = nullptr);

View file

@ -1,7 +1,27 @@
#include "stdafx.h"
#include "rpcs3/Ini.h"
#include "Keyboard.h"
#include "Null/NullKeyboardHandler.h"
#include "Keyboard.h"
GetKeyboardHandlerCountCb GetKeyboardHandlerCount = []()
{
return 1;
};
GetKeyboardHandlerCb GetKeyboardHandler = [](int i) -> KeyboardHandlerBase*
{
return new NullKeyboardHandler;
};
void SetGetKeyboardHandlerCountCallback(GetKeyboardHandlerCountCb cb)
{
GetKeyboardHandlerCount = cb;
}
void SetGetKeyboardHandlerCallback(GetKeyboardHandlerCb cb)
{
GetKeyboardHandler = cb;
}
KeyboardManager::KeyboardManager()
: m_keyboard_handler(nullptr)
@ -19,13 +39,13 @@ void KeyboardManager::Init(const u32 max_connect)
return;
// NOTE: Change these to std::make_unique assignments when C++14 comes out.
int numHandlers = rPlatform::getKeyboardHandlerCount();
int numHandlers = GetKeyboardHandlerCount();
int selectedHandler = Ini.KeyboardHandlerMode.GetValue();
if (selectedHandler > numHandlers)
{
selectedHandler = 0;
}
m_keyboard_handler.reset(rPlatform::getKeyboardHandler(selectedHandler));
m_keyboard_handler.reset(GetKeyboardHandler(selectedHandler));
m_keyboard_handler->Init(max_connect);
m_inited = true;

View file

@ -1,10 +1,9 @@
#pragma once
#include <memory>
#include <vector>
#include "KeyboardHandler.h"
class KeyboardManager //: public wxWindow
class KeyboardManager
{
bool m_inited;
std::unique_ptr<KeyboardHandlerBase> m_keyboard_handler;
@ -23,7 +22,10 @@ public:
CellKbConfig& GetConfig(const u32 keyboard) { return m_keyboard_handler->GetConfig(keyboard); }
bool IsInited() const { return m_inited; }
};
//private:
//DECLARE_EVENT_TABLE();
};
typedef int(*GetKeyboardHandlerCountCb)();
typedef KeyboardHandlerBase*(*GetKeyboardHandlerCb)(int i);
void SetGetKeyboardHandlerCountCallback(GetKeyboardHandlerCountCb cb);
void SetGetKeyboardHandlerCallback(GetKeyboardHandlerCb cb);

View file

@ -1,7 +1,27 @@
#include "stdafx.h"
#include "rpcs3/Ini.h"
#include "Mouse.h"
#include "Null/NullMouseHandler.h"
#include "Mouse.h"
GetMouseHandlerCountCb GetMouseHandlerCount = []()
{
return 1;
};
GetMouseHandlerCb GetMouseHandler = [](int i) -> MouseHandlerBase*
{
return new NullMouseHandler;
};
void SetGetMouseHandlerCountCallback(GetMouseHandlerCountCb cb)
{
GetMouseHandlerCount = cb;
}
void SetGetMouseHandlerCallback(GetMouseHandlerCb cb)
{
GetMouseHandler = cb;
}
MouseManager::MouseManager()
: m_mouse_handler(nullptr)
@ -19,13 +39,13 @@ void MouseManager::Init(const u32 max_connect)
return;
// NOTE: Change these to std::make_unique assignments when C++14 is available.
int numHandlers = rPlatform::getMouseHandlerCount();
int numHandlers = GetMouseHandlerCount();
int selectedHandler = Ini.MouseHandlerMode.GetValue();
if (selectedHandler > numHandlers)
{
selectedHandler = 0;
}
m_mouse_handler.reset(rPlatform::getMouseHandler(selectedHandler));
m_mouse_handler.reset(GetMouseHandler(selectedHandler));
m_mouse_handler->Init(max_connect);
m_inited = true;

View file

@ -1,10 +1,9 @@
#pragma once
#include <memory>
#include <vector>
#include "MouseHandler.h"
class MouseManager //: public wxWindow
class MouseManager
{
bool m_inited;
std::unique_ptr<MouseHandlerBase> m_mouse_handler;
@ -22,7 +21,10 @@ public:
CellMouseRawData& GetRawData(const u32 mouse) { return m_mouse_handler->GetRawData(mouse); }
bool IsInited() const { return m_inited; }
};
//private:
//DECLARE_EVENT_TABLE();
};
typedef int(*GetMouseHandlerCountCb)();
typedef MouseHandlerBase*(*GetMouseHandlerCb)(int i);
void SetGetMouseHandlerCountCallback(GetMouseHandlerCountCb cb);
void SetGetMouseHandlerCallback(GetMouseHandlerCb cb);

View file

@ -1,7 +1,27 @@
#include "stdafx.h"
#include "rpcs3/Ini.h"
#include "Pad.h"
#include "Null/NullPadHandler.h"
#include "Pad.h"
GetPadHandlerCountCb GetPadHandlerCount = []()
{
return 1;
};
GetPadHandlerCb GetPadHandler = [](int i) -> PadHandlerBase*
{
return new NullPadHandler;
};
void SetGetPadHandlerCountCallback(GetPadHandlerCountCb cb)
{
GetPadHandlerCount = cb;
}
void SetGetPadHandlerCallback(GetPadHandlerCb cb)
{
GetPadHandler = cb;
}
PadManager::PadManager()
: m_pad_handler(nullptr)
@ -19,13 +39,13 @@ void PadManager::Init(const u32 max_connect)
return;
// NOTE: Change these to std::make_unique assignments when C++14 is available.
int numHandlers = rPlatform::getPadHandlerCount();
int numHandlers = GetPadHandlerCount();
int selectedHandler = Ini.PadHandlerMode.GetValue();
if (selectedHandler > numHandlers)
{
selectedHandler = 0;
}
m_pad_handler.reset(rPlatform::getPadHandler(selectedHandler));
m_pad_handler.reset(GetPadHandler(selectedHandler));
m_pad_handler->Init(max_connect);
m_inited = true;

View file

@ -1,10 +1,9 @@
#pragma once
#include <memory>
#include <vector>
#include "PadHandler.h"
class PadManager //: public wxWindow
class PadManager
{
bool m_inited;
std::unique_ptr<PadHandlerBase> m_pad_handler;
@ -21,7 +20,10 @@ public:
std::vector<Button>& GetButtons(const u32 pad) { return m_pad_handler->GetButtons(pad); }
bool IsInited() const { return m_inited; }
};
//private:
//DECLARE_EVENT_TABLE();
};
typedef int(*GetPadHandlerCountCb)();
typedef PadHandlerBase*(*GetPadHandlerCb)(int i);
void SetGetPadHandlerCountCallback(GetPadHandlerCountCb cb);
void SetGetPadHandlerCallback(GetPadHandlerCb cb);

View file

@ -3,7 +3,6 @@
#include <algorithm>
#include <vector>
#include "Emu/Io/KeyboardHandler.h"
#include "rpcs3.h"
class WindowsKeyboardHandler final
: public wxWindow

View file

@ -1,10 +1,18 @@
#include "stdafx.h"
#include "rpcs3/Ini.h"
#include "Utilities/rPlatform.h" // only for rImage
#include "Utilities/Log.h"
#include "Emu/Memory/Memory.h"
#include "Emu/System.h"
#include "GLGSRender.h"
GetGSFrameCb GetGSFrame = nullptr;
void SetGetGSFrameCallback(GetGSFrameCb value)
{
GetGSFrame = value;
}
#define CMD_DEBUG 0
#define DUMP_VERTEX_DATA 0
@ -767,13 +775,13 @@ GLGSRender::GLGSRender()
, m_vp_buf_num(-1)
, m_context(nullptr)
{
m_frame = new rGLFrame();// new GLGSFrame();
m_frame = GetGSFrame();
}
GLGSRender::~GLGSRender()
{
m_frame->Close();
// delete m_context; // This won't do anything (deleting void* instead of wglContext*)
m_frame->DeleteContext(m_context);
}
void GLGSRender::Enable(bool enable, const u32 cap)

View file

@ -1,6 +1,5 @@
#pragma once
#include "Emu/RSX/GSRender.h"
#include "Utilities/rPlatform.h"
#include "GLBuffers.h"
#include "GLProgramBuffer.h"
@ -110,6 +109,28 @@ public:
void InitializeLocations();
};
class GSFrameBase
{
public:
GSFrameBase() {}
GSFrameBase(const GSFrameBase&) = delete;
virtual void Close() = 0;
virtual bool IsShown() = 0;
virtual void Hide() = 0;
virtual void Show() = 0;
virtual void* GetNewContext() = 0;
virtual void SetCurrent(void* ctx) = 0;
virtual void DeleteContext(void* ctx) = 0;
virtual void Flip(void* ctx) = 0;
};
typedef GSFrameBase*(*GetGSFrameCb)();
void SetGetGSFrameCallback(GetGSFrameCb value);
class GLGSRender //TODO: find out why this used to inherit from wxWindow
: //public wxWindow
/*,*/ public GSRender
@ -136,7 +157,7 @@ private:
void* m_context;
public:
rGLFrame* m_frame;
GSFrameBase* m_frame;
u32 m_draw_frames;
u32 m_skip_frames;

View file

@ -3,7 +3,6 @@
#include "Emu/System.h"
#include "Emu/SysCalls/Modules.h"
#include "rpcs3.h"
#include "Utilities/rMsgBox.h"
#include "Emu/SysCalls/lv2/sys_time.h"
#include "cellSysutil.h"
@ -70,7 +69,7 @@ int cellMsgDialogOpen2(u32 type, mem_list_ptr_t<u8> msgString, mem_func_ptr_t<Ce
u64 status = CELL_MSGDIALOG_BUTTON_NONE;
volatile bool m_signal = false;
wxGetApp().CallAfter([&]()
CallAfter([&]()
{
wxWindow* parent = nullptr; // TODO: align it better
@ -195,7 +194,7 @@ int cellMsgDialogOpen2(u32 type, mem_list_ptr_t<u8> msgString, mem_func_ptr_t<Ce
if (callback && (g_msg_dialog_state != msgDialogAbort))
callback.async(status, userData);
wxGetApp().CallAfter([&]()
CallAfter([&]()
{
delete g_msg_dialog;
g_msg_dialog = nullptr;
@ -367,7 +366,7 @@ int cellMsgDialogProgressBarSetMsg(u32 progressBarIndex, mem_list_ptr_t<u8> msgS
std::string text(msgString.GetString());
wxGetApp().CallAfter([text, progressBarIndex]()
CallAfter([text, progressBarIndex]()
{
if (g_msg_dialog && !Emu.IsStopped())
{
@ -394,7 +393,7 @@ int cellMsgDialogProgressBarReset(u32 progressBarIndex)
return CELL_MSGDIALOG_ERROR_PARAM;
}
wxGetApp().CallAfter([=]()
CallAfter([=]()
{
if (g_msg_dialog)
{
@ -419,7 +418,7 @@ int cellMsgDialogProgressBarInc(u32 progressBarIndex, u32 delta)
return CELL_MSGDIALOG_ERROR_PARAM;
}
wxGetApp().CallAfter([=]()
CallAfter([=]()
{
if (g_msg_dialog)
{

View file

@ -12,7 +12,6 @@
Module *cellSync = nullptr;
#ifdef PRX_DEBUG
#include "rpcs3.h"
#include "prx_libsre.h"
u32 libsre;
u32 libsre_rtoc;
@ -2220,7 +2219,7 @@ void cellSync_init()
cellSync->AddFunc(0xfe74e8e7, _cellSyncLFQueueCompletePopPointer);
#ifdef PRX_DEBUG
wxGetApp().CallAfter([&]()
CallAfter([]()
{
libsre = Memory.PRXMem.AllocAlign(sizeof(libsre_data), 4096);
memcpy(Memory + libsre, libsre_data, sizeof(libsre_data));

View file

@ -4,7 +4,6 @@
#include "Emu/SysCalls/SysCalls.h"
#include "sys_process.h"
#include "rpcs3.h"
SysCallBase sys_process("sys_process");
@ -31,13 +30,9 @@ s32 sys_process_exit(s32 errorcode)
sys_process.Warning("sys_process_exit(%d)", errorcode);
Emu.Pause();
sys_process.Success("Process finished");
wxGetApp().CallAfter([]()
CallAfter([]()
{
Emu.Stop();
if (Ini.HLEExitOnStop.GetValue())
{
wxGetApp().Exit();
}
});
return CELL_OK;
}

View file

@ -13,8 +13,6 @@
#include "Emu/FS/vfsDeviceLocalFile.h"
#include "Emu/DbgCommand.h"
#include "Emu/CPU/CPUThreadManager.h" //gui dependency
#include "Loader/PSF.h"
#include "../Crypto/unself.h"
@ -514,3 +512,15 @@ void Emulator::LoadPoints(const std::string& path)
}
Emulator Emu;
CallAfterCbType CallAfterCallback = nullptr;
void CallAfter(std::function<void()> func)
{
CallAfterCallback(func);
}
void SetCallAfterCallback(CallAfterCbType cb)
{
CallAfterCallback = cb;
}

View file

@ -1,7 +1,7 @@
#pragma once
#include <atomic>
#include "Emu/CPU/CPUThreadManager.h" //gui dependency
#include "Emu/CPU/CPUThreadManager.h"
#include "Emu/Io/Pad.h"
#include "Emu/Io/Keyboard.h"
#include "Emu/Io/Mouse.h"
@ -171,3 +171,9 @@ public:
};
extern Emulator Emu;
typedef void(*CallAfterCbType)(std::function<void()> func);
void CallAfter(std::function<void()> func);
void SetCallAfterCallback(CallAfterCbType cb);

View file

@ -1,7 +1,6 @@
#include "stdafx.h"
#include "Emu/System.h"
#include "AutoPauseManager.h"
#include "stdafx.h"
#include <iomanip>
#include <sstream>
#include "Utilities/Log.h"

View file

@ -1,11 +1,9 @@
#include "stdafx.h"
#include "Utilities/Log.h"
#include "Utilities/rMsgBox.h"
#include "Emu/Memory/Memory.h"
#include "Emu/System.h"
#include "CompilerELF.h"
#include "Emu/Cell/PPUProgramCompiler.h"
using namespace PPU_opcodes;
#include "CompilerELF.h"
enum CompilerIDs
{

View file

@ -1,9 +1,5 @@
#pragma once
#include "Emu/Cell/PPUOpcodes.h"
#include "Loader/ELF64.h"
#include <wx/aui/aui.h>
#include <wx/richtext/richtextctrl.h>
#include "Gui/MainFrame.h"
class CompilerELF : public FrameBase

View file

@ -10,8 +10,6 @@
#include "Utilities/Log.h"
#include "Gui/ConLogFrame.h"
#include "Emu/System.h"
wxDEFINE_EVENT(EVT_LOG_COMMAND, wxCommandEvent);
//amount of memory in bytes used to buffer log messages for the gui

View file

@ -1,7 +1,6 @@
#include "stdafx.h"
#include <wx/statline.h>
#include "Utilities/Log.h"
#include "Emu/Memory/Memory.h"
#include "Emu/System.h"
#include "rpcs3.h"

View file

@ -12,10 +12,49 @@ GLGSFrame::GLGSFrame()
canvas->Bind(wxEVT_LEFT_DCLICK, &GSFrame::OnLeftDclick, this);
}
void GLGSFrame::Flip(wxGLContext *context)
GLGSFrame::~GLGSFrame()
{
}
void GLGSFrame::Close()
{
GSFrame::Close();
}
bool GLGSFrame::IsShown()
{
return GSFrame::IsShown();
}
void GLGSFrame::Hide()
{
GSFrame::Hide();
}
void GLGSFrame::Show()
{
GSFrame::Show();
}
void* GLGSFrame::GetNewContext()
{
return new wxGLContext(GetCanvas());
}
void GLGSFrame::SetCurrent(void* ctx)
{
GetCanvas()->SetCurrent(*(wxGLContext*)ctx);
}
void GLGSFrame::DeleteContext(void* ctx)
{
delete (wxGLContext*)ctx;
}
void GLGSFrame::Flip(void* context)
{
if (!canvas) return;
canvas->SetCurrent(*context);
canvas->SetCurrent(*(wxGLContext*)context);
static Timer fps_t;
canvas->SwapBuffers();

View file

@ -1,16 +1,26 @@
#pragma once
#include "wx/glcanvas.h"
#include "Emu/RSX/GL/GLGSRender.h"
#include "Gui/GSFrame.h"
#include "wx/glcanvas.h"
struct GLGSFrame : public GSFrame
struct GLGSFrame : public GSFrame, public GSFrameBase
{
wxGLCanvas* canvas;
u32 m_frames;
GLGSFrame();
~GLGSFrame() {}
~GLGSFrame();
void Flip(wxGLContext *context);
virtual void Close() override;
virtual bool IsShown() override;
virtual void Hide() override;
virtual void Show() override;
virtual void* GetNewContext() override;
virtual void SetCurrent(void* ctx) override;
virtual void DeleteContext(void* ctx) override;
virtual void Flip(void* context) override;
wxGLCanvas* GetCanvas() const { return canvas; }

View file

@ -715,6 +715,14 @@ void MainFrame::UpdateUI(wxCommandEvent& event)
default:
return;
}
if (event.GetId() == DID_STOPPED_EMU)
{
if (Ini.HLEExitOnStop.GetValue())
{
wxGetApp().Exit();
}
}
}
else
{

View file

@ -1,5 +1,6 @@
#include "stdafx.h"
#include "rpcs3/Ini.h"
#include "Utilities/rPlatform.h"
#include "Utilities/Log.h"
#include "Emu/Memory/Memory.h"
#include "Emu/System.h"

View file

@ -1,8 +1,8 @@
#include "stdafx.h"
#include "Ini.h"
#include "Utilities/rPlatform.h"
#include "Utilities/StrFmt.h"
#include "Ini.h"
#include <algorithm>
#include <cctype>
#include <regex>

View file

@ -1,7 +1,6 @@
#pragma once
#include <utility>
#include "Utilities/rPlatform.h"
#include "Utilities/simpleini/SimpleIni.h"
//TODO: make thread safe/remove static singleton

View file

@ -63,6 +63,7 @@
<ClCompile Include="Emu\Cell\SPUThread.cpp" />
<ClCompile Include="Emu\CPU\CPUThread.cpp" />
<ClCompile Include="Emu\CPU\CPUThreadManager.cpp" />
<ClCompile Include="Emu\DbgCommand.cpp" />
<ClCompile Include="Emu\Event.cpp" />
<ClCompile Include="Emu\FS\VFS.cpp" />
<ClCompile Include="Emu\FS\vfsDevice.cpp" />
@ -197,7 +198,7 @@
<ClCompile Include="Emu\SysCalls\Static.cpp" />
<ClCompile Include="Emu\SysCalls\SysCalls.cpp" />
<ClCompile Include="Emu\System.cpp" />
<ClCompile Include="Emu\Io\XInput\XInputPadHandler.cpp" />
<ClCompile Include="Ini.cpp" />
<ClCompile Include="Loader\ELF.cpp" />
<ClCompile Include="Loader\ELF32.cpp" />
<ClCompile Include="Loader\ELF64.cpp" />
@ -296,12 +297,11 @@
<ClInclude Include="Emu\Io\KeyboardHandler.h" />
<ClInclude Include="Emu\Io\Mouse.h" />
<ClInclude Include="Emu\Io\MouseHandler.h" />
<ClInclude Include="Emu\Io\Null\NullKeyboardHandler.h" />
<ClInclude Include="Emu\Io\Null\NullMouseHandler.h" />
<ClInclude Include="Emu\Io\Null\NullPadHandler.h" />
<ClInclude Include="Emu\Io\Pad.h" />
<ClInclude Include="Emu\Io\PadHandler.h" />
<ClInclude Include="Emu\Io\Windows\WindowsKeyboardHandler.h" />
<ClInclude Include="Emu\Io\Windows\WindowsMouseHandler.h" />
<ClInclude Include="Emu\Io\Windows\WindowsPadHandler.h" />
<ClInclude Include="Emu\Memory\DynamicMemoryBlockBase.h" />
<ClInclude Include="Emu\Memory\Memory.h" />
<ClInclude Include="Emu\Memory\MemoryBlock.h" />
@ -391,7 +391,7 @@
<ClInclude Include="Emu\SysCalls\Static.h" />
<ClInclude Include="Emu\SysCalls\SysCalls.h" />
<ClInclude Include="Emu\System.h" />
<ClInclude Include="Emu\Io\XInput\XInputPadHandler.h" />
<ClInclude Include="Ini.h" />
<ClInclude Include="Loader\ELF.h" />
<ClInclude Include="Loader\ELF32.h" />
<ClInclude Include="Loader\ELF64.h" />

View file

@ -27,12 +27,6 @@
<Filter Include="Emu\Io">
<UniqueIdentifier>{1df5b438-f263-4ff4-9b86-a9ea368f2106}</UniqueIdentifier>
</Filter>
<Filter Include="Emu\Io\Null">
<UniqueIdentifier>{d489f5c9-f7b7-4402-9cfb-6aa2c813cdf6}</UniqueIdentifier>
</Filter>
<Filter Include="Emu\Io\Windows">
<UniqueIdentifier>{c04826b8-05a1-4015-b3aa-ef44805531a2}</UniqueIdentifier>
</Filter>
<Filter Include="Emu\FS">
<UniqueIdentifier>{b26b6b08-a8ce-4bb5-8339-c5352a23ce96}</UniqueIdentifier>
</Filter>
@ -69,9 +63,6 @@
<Filter Include="Emu\Cell\currently_unused">
<UniqueIdentifier>{ead7494f-a872-4b4d-a864-1a61c3b6012f}</UniqueIdentifier>
</Filter>
<Filter Include="Emu\Io\XInput">
<UniqueIdentifier>{187d33b8-7b69-4081-9545-de6ad1d8fe98}</UniqueIdentifier>
</Filter>
<Filter Include="Emu\RSX">
<UniqueIdentifier>{fadb4b36-57af-4583-891d-d22ff369e266}</UniqueIdentifier>
</Filter>
@ -81,6 +72,9 @@
<Filter Include="Emu\RSX\GL">
<UniqueIdentifier>{6f1da5b2-52c5-416b-9b5c-b9897bc1b300}</UniqueIdentifier>
</Filter>
<Filter Include="Emu\Io\Null">
<UniqueIdentifier>{fcac6852-b45f-4cf2-afee-cf56bcea14e5}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="Crypto\aes.cpp">
@ -479,9 +473,6 @@
<ClCompile Include="Emu\SysCalls\Modules\sys_http.cpp">
<Filter>Emu\Cell\currently_unused</Filter>
</ClCompile>
<ClCompile Include="Emu\Io\XInput\XInputPadHandler.cpp">
<Filter>Emu\Io\XInput</Filter>
</ClCompile>
<ClCompile Include="..\Utilities\SSemaphore.cpp">
<Filter>Utilities</Filter>
</ClCompile>
@ -608,6 +599,12 @@
<ClCompile Include="Emu\SysCalls\LogBase.cpp">
<Filter>Emu\SysCalls</Filter>
</ClCompile>
<ClCompile Include="Emu\DbgCommand.cpp">
<Filter>Emu</Filter>
</ClCompile>
<ClCompile Include="Ini.cpp">
<Filter>Utilities</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="Crypto\aes.h">
@ -754,18 +751,6 @@
<ClInclude Include="Emu\Io\PadHandler.h">
<Filter>Emu\Io</Filter>
</ClInclude>
<ClInclude Include="Emu\Io\Null\NullPadHandler.h">
<Filter>Emu\Io\Null</Filter>
</ClInclude>
<ClInclude Include="Emu\Io\Windows\WindowsKeyboardHandler.h">
<Filter>Emu\Io\Windows</Filter>
</ClInclude>
<ClInclude Include="Emu\Io\Windows\WindowsMouseHandler.h">
<Filter>Emu\Io\Windows</Filter>
</ClInclude>
<ClInclude Include="Emu\Io\Windows\WindowsPadHandler.h">
<Filter>Emu\Io\Windows</Filter>
</ClInclude>
<ClInclude Include="Emu\FS\VFS.h">
<Filter>Emu\FS</Filter>
</ClInclude>
@ -994,9 +979,6 @@
<ClInclude Include="Emu\SysCalls\Modules\libsynth2.h">
<Filter>Emu\Cell\currently_unused</Filter>
</ClInclude>
<ClInclude Include="Emu\Io\XInput\XInputPadHandler.h">
<Filter>Emu\Io\XInput</Filter>
</ClInclude>
<ClInclude Include="Emu\Event.h">
<Filter>Emu\SysCalls</Filter>
</ClInclude>
@ -1165,5 +1147,17 @@
<ClInclude Include="Emu\SysCalls\Modules\cellFontFT.h">
<Filter>Emu\SysCalls\Modules</Filter>
</ClInclude>
<ClInclude Include="Ini.h">
<Filter>Utilities</Filter>
</ClInclude>
<ClInclude Include="Emu\Io\Null\NullPadHandler.h">
<Filter>Emu\Io\Null</Filter>
</ClInclude>
<ClInclude Include="Emu\Io\Null\NullKeyboardHandler.h">
<Filter>Emu\Io\Null</Filter>
</ClInclude>
<ClInclude Include="Emu\Io\Null\NullMouseHandler.h">
<Filter>Emu\Io\Null</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -5,6 +5,20 @@
#include "Gui/ConLogFrame.h"
#include "Emu/GameInfo.h"
#include "Emu/Io/Null/NullKeyboardHandler.h"
#include "Emu/Io/Windows/WindowsKeyboardHandler.h"
#include "Emu/Io/Null/NullMouseHandler.h"
#include "Emu/Io/Windows/WindowsMouseHandler.h"
#include "Emu/Io/Null/NullPadHandler.h"
#include "Emu/Io/Windows/WindowsPadHandler.h"
#if defined(_WIN32)
#include "Emu/Io/XInput/XInputPadHandler.h"
#endif
#include "Gui/GLGSFrame.h"
#ifdef _WIN32
#include <wx/msw/wrapwin.h>
#endif
@ -20,6 +34,82 @@ Rpcs3App* TheApp;
bool Rpcs3App::OnInit()
{
SetSendDbgCommandCallback([](DbgCommand id, CPUThread* t)
{
wxGetApp().SendDbgCommand(id, t);
});
SetCallAfterCallback([](std::function<void()> func)
{
wxGetApp().CallAfter(func);
});
SetGetKeyboardHandlerCountCallback([]()
{
return 2;
});
SetGetKeyboardHandlerCallback([](int i) -> KeyboardHandlerBase*
{
switch (i)
{
case 0:
return new NullKeyboardHandler();
break;
case 1:
return new WindowsKeyboardHandler();
break;
default:
return new NullKeyboardHandler();
}
});
SetGetMouseHandlerCountCallback([]()
{
return 2;
});
SetGetMouseHandlerCallback([](int i) -> MouseHandlerBase*
{
switch (i)
{
case 0:
return new NullMouseHandler();
break;
case 1:
return new WindowsMouseHandler();
break;
default:
return new NullMouseHandler();
}
});
SetGetPadHandlerCountCallback([]()
{
#if defined(_WIN32)
return 3;
#else
return 2;
#endif
});
SetGetPadHandlerCallback([](int i) -> PadHandlerBase*
{
switch (i)
{
case 0:
return new NullPadHandler();
break;
case 1:
return new WindowsPadHandler();
break;
#if defined(_WIN32)
case 2:
return new XInputPadHandler();
break;
#endif
default:
return new NullPadHandler();
}
});
SetGetGSFrameCallback([]() -> GSFrameBase*
{
return new GLGSFrame();
});
TheApp = this;
SetAppName(_PRGNAME_);
wxInitAllImageHandlers();
@ -78,10 +168,5 @@ Rpcs3App::Rpcs3App()
XInitThreads();
#endif
}
/*
CPUThread& GetCPU(const u8 core)
{
return Emu.GetCPU().Get(core);
}*/
GameInfo CurGameInfo;

View file

@ -163,7 +163,7 @@
<ClCompile Include="..\Utilities\SMutex.cpp" />
<ClCompile Include="..\Utilities\StrFmt.cpp" />
<ClCompile Include="..\Utilities\Thread.cpp" />
<ClCompile Include="Emu\DbgCommand.cpp" />
<ClCompile Include="Emu\Io\XInput\XInputPadHandler.cpp" />
<ClCompile Include="Gui\AutoPauseManager.cpp" />
<ClCompile Include="Gui\CompilerELF.cpp" />
<ClCompile Include="Gui\ConLogFrame.cpp" />
@ -182,7 +182,6 @@
<ClCompile Include="Gui\TextInputDialog.cpp" />
<ClCompile Include="Gui\VFSManager.cpp" />
<ClCompile Include="Gui\VHDDManager.cpp" />
<ClCompile Include="Ini.cpp" />
<ClCompile Include="rpcs3.cpp" />
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
@ -208,6 +207,10 @@
<ClInclude Include="..\Utilities\StrFmt.h" />
<ClInclude Include="..\Utilities\Thread.h" />
<ClInclude Include="..\Utilities\Timer.h" />
<ClInclude Include="Emu\Io\Windows\WindowsKeyboardHandler.h" />
<ClInclude Include="Emu\Io\Windows\WindowsMouseHandler.h" />
<ClInclude Include="Emu\Io\Windows\WindowsPadHandler.h" />
<ClInclude Include="Emu\Io\XInput\XInputPadHandler.h" />
<ClInclude Include="Gui\AboutDialog.h" />
<ClInclude Include="Gui\AutoPauseManager.h" />
<ClInclude Include="Gui\CompilerELF.h" />
@ -228,7 +231,6 @@
<ClInclude Include="Gui\TextInputDialog.h" />
<ClInclude Include="Gui\VFSManager.h" />
<ClInclude Include="Gui\VHDDManager.h" />
<ClInclude Include="Ini.h" />
<ClInclude Include="rpcs3.h" />
<ClInclude Include="stdafx.h" />
</ItemGroup>

View file

@ -1,9 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Emu">
<UniqueIdentifier>{29c70b04-59a5-4d5b-98f9-3584df137ed1}</UniqueIdentifier>
</Filter>
<Filter Include="Gui">
<UniqueIdentifier>{98fb6fa5-9a9a-48a6-a6b4-be4b9a69b76e}</UniqueIdentifier>
</Filter>
@ -13,6 +10,15 @@
<Filter Include="Utilities">
<UniqueIdentifier>{9bd88f78-8528-48f3-b9e0-78e06476b04d}</UniqueIdentifier>
</Filter>
<Filter Include="Io">
<UniqueIdentifier>{6da015d7-ee99-4d6b-9588-42414b63ee0e}</UniqueIdentifier>
</Filter>
<Filter Include="Io\Windows">
<UniqueIdentifier>{ce9ce942-07dd-4cbc-9b76-0f754c363eda}</UniqueIdentifier>
</Filter>
<Filter Include="Io\XInput">
<UniqueIdentifier>{b30572ce-b602-4c10-ad69-bd3f1c8a0144}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="rpcs3.cpp">
@ -30,9 +36,6 @@
<ClCompile Include="Gui\DisAsmFrame.cpp">
<Filter>Gui</Filter>
</ClCompile>
<ClCompile Include="Ini.cpp">
<Filter>rpcs3</Filter>
</ClCompile>
<ClCompile Include="Gui\CompilerELF.cpp">
<Filter>Gui</Filter>
</ClCompile>
@ -90,9 +93,6 @@
<ClCompile Include="Gui\GSFrame.cpp">
<Filter>Gui</Filter>
</ClCompile>
<ClCompile Include="Emu\DbgCommand.cpp">
<Filter>Emu</Filter>
</ClCompile>
<ClCompile Include="Gui\ConLogFrame.cpp">
<Filter>Gui</Filter>
</ClCompile>
@ -101,10 +101,13 @@
</ClCompile>
<ClCompile Include="Gui\SaveDataUtility.cpp">
<Filter>Gui</Filter>
</ClCompile>
<ClCompile Include="Gui\KernelExplorer.cpp">
</ClCompile>
<ClCompile Include="Gui\KernelExplorer.cpp">
<Filter>Gui</Filter>
</ClCompile>
<ClCompile Include="Emu\Io\XInput\XInputPadHandler.cpp">
<Filter>Io\XInput</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="rpcs3.rc" />
@ -167,9 +170,6 @@
<ClInclude Include="Gui\VHDDManager.h">
<Filter>Gui</Filter>
</ClInclude>
<ClInclude Include="Ini.h">
<Filter>rpcs3</Filter>
</ClInclude>
<ClInclude Include="stdafx.h">
<Filter>rpcs3</Filter>
</ClInclude>
@ -217,9 +217,21 @@
</ClInclude>
<ClInclude Include="Gui\SaveDataUtility.h">
<Filter>Gui</Filter>
</ClInclude>
<ClInclude Include="Gui\KernelExplorer.h">
</ClInclude>
<ClInclude Include="Gui\KernelExplorer.h">
<Filter>Gui</Filter>
</ClInclude>
<ClInclude Include="Emu\Io\Windows\WindowsKeyboardHandler.h">
<Filter>Io\Windows</Filter>
</ClInclude>
<ClInclude Include="Emu\Io\Windows\WindowsMouseHandler.h">
<Filter>Io\Windows</Filter>
</ClInclude>
<ClInclude Include="Emu\Io\Windows\WindowsPadHandler.h">
<Filter>Io\Windows</Filter>
</ClInclude>
<ClInclude Include="Emu\Io\XInput\XInputPadHandler.h">
<Filter>Io\XInput</Filter>
</ClInclude>
</ItemGroup>
</Project>