summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/Src/ControllerInterface
diff options
context:
space:
mode:
authorJordan Woyak <jordan.woyak@gmail.com>2010-07-26 05:30:50 +0000
committerJordan Woyak <jordan.woyak@gmail.com>2010-07-26 05:30:50 +0000
commit5be58c6772c131cecbc1786a14f5265a9d99e159 (patch)
tree271085e1fa4144702e9403dc140fae9c8020cb03 /Source/Core/InputCommon/Src/ControllerInterface
parent0eaa7352fd26ac2bd8ee72678e38e76093e8daf2 (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')
-rw-r--r--Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.cpp16
-rw-r--r--Source/Core/InputCommon/Src/ControllerInterface/ControllerInterface.h8
-rw-r--r--Source/Core/InputCommon/Src/ControllerInterface/DInput/DInputKeyboardMouse.cpp4
-rw-r--r--Source/Core/InputCommon/Src/ControllerInterface/XInput/XInput.cpp2
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;