diff options
| author | Jordan Woyak <jordan.woyak@gmail.com> | 2010-07-26 05:30:50 +0000 |
|---|---|---|
| committer | Jordan Woyak <jordan.woyak@gmail.com> | 2010-07-26 05:30:50 +0000 |
| commit | 5be58c6772c131cecbc1786a14f5265a9d99e159 (patch) | |
| tree | 271085e1fa4144702e9403dc140fae9c8020cb03 /Source/Core/InputCommon/Src/ControllerInterface | |
| parent | 0eaa7352fd26ac2bd8ee72678e38e76093e8daf2 (diff) | |
Gecko codes: Added parenthesis where they were needed.(thanks to glennrics and soren) Fixed a copy paste error with write & fill 8bit codes. Also forgot to remove a return false;.(some more codes should work (fixed issue 2968)) New Wiimote Plugin: Added emulated swinging.(seems to work) Changed the emulated calibration data to some nice values. ControllerInterface: moved and constified some stuff.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5980 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/InputCommon/Src/ControllerInterface')
4 files changed, 23 insertions, 7 deletions
diff --git a/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.cpp b/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.cpp index 36e6bd98f8..235985704a 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.cpp +++ b/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.cpp @@ -121,8 +121,13 @@ void ControllerInterface::SetHwnd( void* const hwnd ) // // update input for all devices, return true if all devices returned successful // -bool ControllerInterface::UpdateInput() +bool ControllerInterface::UpdateInput(const bool force) { + if (force) + update_lock.Enter(); + else if (false == update_lock.TryEnter()) + return false; + size_t ok_count = 0; std::vector<Device*>::const_iterator @@ -137,6 +142,7 @@ bool ControllerInterface::UpdateInput() //(*d)->ClearInputState(); } + update_lock.Leave(); return (m_devices.size() == ok_count); } @@ -145,8 +151,13 @@ bool ControllerInterface::UpdateInput() // // update output for all devices, return true if all devices returned successful // -bool ControllerInterface::UpdateOutput() +bool ControllerInterface::UpdateOutput(const bool force) { + if (force) + update_lock.Enter(); + else if (false == update_lock.TryEnter()) + return false; + size_t ok_count = 0; std::vector<Device*>::const_iterator @@ -155,6 +166,7 @@ bool ControllerInterface::UpdateOutput() for (;d != e; ++d) (*d)->UpdateOutput(); + update_lock.Leave(); return (m_devices.size() == ok_count); } diff --git a/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.h b/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.h index 903797a6e4..af07b1ac69 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.h +++ b/Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.h @@ -6,7 +6,9 @@ #include <sstream> #include <map> #include <algorithm> + #include "Common.h" +#include "Thread.h" // enable disable sources #ifdef _WIN32 @@ -214,12 +216,14 @@ public: bool IsInit() const { return m_is_init; } void UpdateReference(ControlReference* control, const DeviceQualifier& default_device) const; - bool UpdateInput(); - bool UpdateOutput(); + bool UpdateInput(const bool force = false); + bool UpdateOutput(const bool force = false); const std::vector<Device*>& Devices() const { return m_devices; } Device* FindDevice(const DeviceQualifier& devq) const; + Common::CriticalSection update_lock; + private: bool m_is_init; std::vector<Device*> m_devices; diff --git a/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputKeyboardMouse.cpp b/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputKeyboardMouse.cpp index 33101c2507..1cd925c992 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputKeyboardMouse.cpp +++ b/Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputKeyboardMouse.cpp @@ -19,7 +19,7 @@ namespace ciface namespace DInput { -static struct +static const struct { const BYTE code; const char* const name; @@ -28,7 +28,7 @@ static struct #include "NamedKeys.h" }; -static struct +static const struct { const BYTE code; const char* const name; diff --git a/Source/Core/InputCommon/Src/ControllerInterface/XInput/XInput.cpp b/Source/Core/InputCommon/Src/ControllerInterface/XInput/XInput.cpp index 526c6ffd9a..0e39942396 100644 --- a/Source/Core/InputCommon/Src/ControllerInterface/XInput/XInput.cpp +++ b/Source/Core/InputCommon/Src/ControllerInterface/XInput/XInput.cpp @@ -9,7 +9,7 @@ namespace ciface namespace XInput { -static struct +static const struct { const char* const name; const WORD bitmask; |
