diff options
author | 2016-08-22 08:28:55 -0400 | |
---|---|---|
committer | 2016-08-22 15:02:56 -0400 | |
commit | 7d3ce203b52531989d8895f92c19c83f8a14eb21 (patch) | |
tree | fe9e40b536a046872041760c7b82c50c311ccf27 /src/osd/modules/input/input_rawinput.cpp | |
parent | a65776420e6e7d16ff494f00b1eb0fede2be390e (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.cpp | 33 |
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; } }; |