summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/input/input_rawinput.cpp
diff options
context:
space:
mode:
author Brad Hughes <bradhugh@outlook.com>2016-08-22 08:28:55 -0400
committer Brad Hughes <bradhugh@outlook.com>2016-08-22 15:02:56 -0400
commit7d3ce203b52531989d8895f92c19c83f8a14eb21 (patch)
treefe9e40b536a046872041760c7b82c50c311ccf27 /src/osd/modules/input/input_rawinput.cpp
parenta65776420e6e7d16ff494f00b1eb0fede2be390e (diff)
osd input code cleanup (nw)
Diffstat (limited to 'src/osd/modules/input/input_rawinput.cpp')
-rw-r--r--src/osd/modules/input/input_rawinput.cpp33
1 files changed, 18 insertions, 15 deletions
diff --git a/src/osd/modules/input/input_rawinput.cpp b/src/osd/modules/input/input_rawinput.cpp
index 0a9466598cc..ee6dbf4a511 100644
--- a/src/osd/modules/input/input_rawinput.cpp
+++ b/src/osd/modules/input/input_rawinput.cpp
@@ -21,10 +21,10 @@
#include <mutex>
#include <functional>
+#include <algorithm>
// MAME headers
#include "emu.h"
-#include "osdepend.h"
#include "strconv.h"
// MAMEOS headers
@@ -467,7 +467,11 @@ private:
public:
rawinput_module(const char *type, const char* name)
- : wininput_module(type, name)
+ : wininput_module(type, name),
+ get_rawinput_device_list(nullptr),
+ get_rawinput_data(nullptr),
+ get_rawinput_device_info(nullptr),
+ register_rawinput_devices(nullptr)
{
}
@@ -615,24 +619,23 @@ protected:
{
std::lock_guard<std::mutex> scope_lock(m_module_lock);
- rawinput_device *devinfo;
+ RAWINPUT *input = reinterpret_cast<RAWINPUT*>(data);
+
// find the device in the list and update
- for (int i = 0; i < devicelist()->size(); i++)
+ auto target_device = std::find_if(devicelist()->begin(), devicelist()->end(), [input](auto &device)
+ {
+ auto devinfo = dynamic_cast<rawinput_device*>(device.get());
+ return devinfo != nullptr && input->header.hDevice == devinfo->device_handle();
+ });
+
+ if (target_device != devicelist()->end())
{
- devinfo = dynamic_cast<rawinput_device*>(devicelist()->at(i));
- if (devinfo)
- {
- RAWINPUT *input = reinterpret_cast<RAWINPUT*>(data);
- if (input->header.hDevice == devinfo->device_handle())
- {
- devinfo->queue_events(input, 1);
- result = true;
- }
- }
+ static_cast<rawinput_device*>((*target_device).get())->queue_events(input, 1);
+ return true;
}
}
- return result;
+ return false;
}
};