diff --git a/Utilities/rPlatform.cpp b/Utilities/rPlatform.cpp index d309feb13e..2fa307fb58 100644 --- a/Utilities/rPlatform.cpp +++ b/Utilities/rPlatform.cpp @@ -11,6 +11,10 @@ #include "Emu/Io/Null/NullPadHandler.h" #include "Emu/Io/Windows/WindowsPadHandler.h" +#if defined(_WIN32) +#include "Emu/Io/XInput/XInputPadHandler.h" +#endif + rCanvas::rCanvas(void *parent) { @@ -118,13 +122,16 @@ int rPlatform::getKeyboardHandlerCount() KeyboardHandlerBase *rPlatform::getKeyboardHandler(int i) { - if (i == 0) + switch (i) { - return new NullKeyboardHandler(); - } - else if (i == 1) - { - return new WindowsKeyboardHandler(); + case 0: + return new NullKeyboardHandler(); + break; + case 1: + return new WindowsKeyboardHandler(); + break; + default: + return new NullKeyboardHandler(); } } @@ -136,30 +143,45 @@ int rPlatform::getMouseHandlerCount() MouseHandlerBase *rPlatform::getMouseHandler(int i) { - if (i == 0) + switch (i) { + case 0: return new NullMouseHandler(); - } - else if (i == 1) - { + 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) { - if (i == 0) + 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(); } - else if (i == 1) - { - return new WindowsPadHandler(); - } } \ No newline at end of file diff --git a/Utilities/rXml.cpp b/Utilities/rXml.cpp index 089b88114d..62da3d4c0c 100644 --- a/Utilities/rXml.cpp +++ b/Utilities/rXml.cpp @@ -44,13 +44,27 @@ rXmlNode::~rXmlNode() std::shared_ptr rXmlNode::GetChildren() { wxXmlNode* result = reinterpret_cast(handle)->GetChildren(); - return std::make_shared(reinterpret_cast(result)); + if (result) + { + return std::make_shared(reinterpret_cast(result)); + } + else + { + return std::shared_ptr(nullptr); + } } std::shared_ptr rXmlNode::GetNext() { wxXmlNode* result = reinterpret_cast(handle)->GetNext(); - return std::make_shared(reinterpret_cast(result)); + if (result) + { + return std::make_shared(reinterpret_cast(result)); + } + else + { + return std::shared_ptr(nullptr); + } } std::string rXmlNode::GetName() diff --git a/rpcs3/emucore.vcxproj b/rpcs3/emucore.vcxproj index 1eea900d87..706c2e44e5 100644 --- a/rpcs3/emucore.vcxproj +++ b/rpcs3/emucore.vcxproj @@ -52,6 +52,7 @@ + @@ -120,39 +121,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - @@ -215,6 +250,7 @@ + @@ -306,6 +342,8 @@ + + @@ -313,7 +351,6 @@ - diff --git a/rpcs3/emucore.vcxproj.filters b/rpcs3/emucore.vcxproj.filters index af59ad9daa..adf0547ca4 100644 --- a/rpcs3/emucore.vcxproj.filters +++ b/rpcs3/emucore.vcxproj.filters @@ -75,6 +75,9 @@ {84c34dd1-4c49-4ecf-8ee2-4165c14f24be} + + {ead7494f-a872-4b4d-a864-1a61c3b6012f} + @@ -461,9 +464,114 @@ Emu\SysCalls - + Emu\Cell + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + @@ -919,8 +1027,14 @@ Utilities - + Emu\Cell + + Emu\Cell\currently_unused + + + Emu\Cell\currently_unused + \ No newline at end of file diff --git a/rpcs3/rpcs3.vcxproj b/rpcs3/rpcs3.vcxproj index d0e69a97e9..aaafa6aa15 100644 --- a/rpcs3/rpcs3.vcxproj +++ b/rpcs3/rpcs3.vcxproj @@ -73,7 +73,7 @@ false false $(ProjectName)-$(PlatformShortName) - + Level3