diff --git a/src/osd/modules/input/input_common.h b/src/osd/modules/input/input_common.h index 56607d88d4d..eedfd1450c3 100644 --- a/src/osd/modules/input/input_common.h +++ b/src/osd/modules/input/input_common.h @@ -551,20 +551,22 @@ protected: virtual void before_poll(running_machine &machine) {} }; -inline static int generic_button_get_state(void *device_internal, void *item_internal) +template +int generic_button_get_state(void *device_internal, void *item_internal) { - device_info *devinfo = (device_info *)device_internal; - unsigned char *itemdata = (unsigned char*)item_internal; + device_info *devinfo = static_cast(device_internal); + TItem *itemdata = static_cast(item_internal); // return the current state devinfo->module().poll_if_necessary(devinfo->machine()); return *itemdata >> 7; } -inline static int generic_axis_get_state(void *device_internal, void *item_internal) +template +int generic_axis_get_state(void *device_internal, void *item_internal) { - device_info *devinfo = (device_info *)device_internal; - int *axisdata = (int*)item_internal; + device_info *devinfo = static_cast(device_internal); + TItem *axisdata = static_cast(item_internal); // return the current state devinfo->module().poll_if_necessary(devinfo->machine()); diff --git a/src/osd/modules/input/input_dinput.cpp b/src/osd/modules/input/input_dinput.cpp index 21874cbbe95..061eab446e8 100644 --- a/src/osd/modules/input/input_dinput.cpp +++ b/src/osd/modules/input/input_dinput.cpp @@ -329,7 +329,7 @@ public: name = device_item_name(devinfo, keynum, defname, nullptr); // add the item to the device - devinfo->device()->add_item(name.c_str(), itemid, generic_button_get_state, &devinfo->keyboard.state[keynum]); + devinfo->device()->add_item(name.c_str(), itemid, generic_button_get_state, &devinfo->keyboard.state[keynum]); } exit: @@ -406,7 +406,11 @@ public: { // add to the mouse device and optionally to the gun device as well std::string name = device_item_name(devinfo, offsetof(DIMOUSESTATE, lX) + axisnum * sizeof(LONG), default_axis_name[axisnum], nullptr); - devinfo->device()->add_item(name.c_str(), static_cast(ITEM_ID_XAXIS + axisnum), generic_axis_get_state, &devinfo->mouse.lX + axisnum); + devinfo->device()->add_item( + name.c_str(), + static_cast(ITEM_ID_XAXIS + axisnum), + generic_axis_get_state, + &devinfo->mouse.lX + axisnum); } // populate the buttons @@ -416,7 +420,11 @@ public: // add to the mouse device std::string name = device_item_name(devinfo, offset, default_button_name(butnum), nullptr); - devinfo->device()->add_item(name.c_str(), static_cast(ITEM_ID_BUTTON1 + butnum), generic_button_get_state, &devinfo->mouse.rgbButtons[butnum]); + devinfo->device()->add_item( + name.c_str(), + static_cast(ITEM_ID_BUTTON1 + butnum), + generic_button_get_state, + &devinfo->mouse.rgbButtons[butnum]); } exit: @@ -506,7 +514,11 @@ int dinput_joystick_device::configure() // populate the item description as well name = dinput_module::device_item_name(this, offsetof(DIJOYSTATE2, lX) + axisnum * sizeof(LONG), default_axis_name[axisnum], nullptr); - device()->add_item(name.c_str(), static_cast(ITEM_ID_XAXIS + axisnum), generic_axis_get_state, &joystick.state.lX + axisnum); + device()->add_item( + name.c_str(), + static_cast(ITEM_ID_XAXIS + axisnum), + generic_axis_get_state, + &joystick.state.lX + axisnum); axiscount++; } @@ -548,7 +560,7 @@ int dinput_joystick_device::configure() else itemid = ITEM_ID_OTHER_SWITCH; - device()->add_item(name.c_str(), itemid, generic_button_get_state, &joystick.state.rgbButtons[butnum]); + device()->add_item(name.c_str(), itemid, generic_button_get_state, &joystick.state.rgbButtons[butnum]); } return 0; diff --git a/src/osd/modules/input/input_rawinput.cpp b/src/osd/modules/input/input_rawinput.cpp index c4f84642b2f..f16d79cbe7a 100644 --- a/src/osd/modules/input/input_rawinput.cpp +++ b/src/osd/modules/input/input_rawinput.cpp @@ -617,7 +617,7 @@ protected: name = utf8_from_tstring(keyname); // add the item to the device - devinfo->device()->add_item(name, itemid, generic_button_get_state, &devinfo->keyboard.state[keynum]); + devinfo->device()->add_item(name, itemid, generic_button_get_state, &devinfo->keyboard.state[keynum]); osd_free(name); } } @@ -652,13 +652,21 @@ protected: // populate the axes for (int axisnum = 0; axisnum < 3; axisnum++) { - devinfo->device()->add_item(default_axis_name[axisnum], static_cast(ITEM_ID_XAXIS + axisnum), generic_axis_get_state, &devinfo->mouse.lX + axisnum); + devinfo->device()->add_item( + default_axis_name[axisnum], + static_cast(ITEM_ID_XAXIS + axisnum), + generic_axis_get_state, + &devinfo->mouse.lX + axisnum); } // populate the buttons for (int butnum = 0; butnum < 5; butnum++) { - devinfo->device()->add_item(default_button_name(butnum), static_cast(ITEM_ID_BUTTON1 + butnum), generic_button_get_state, &devinfo->mouse.rgbButtons[butnum]); + devinfo->device()->add_item( + default_button_name(butnum), + static_cast(ITEM_ID_BUTTON1 + butnum), + generic_button_get_state, + &devinfo->mouse.rgbButtons[butnum]); } } }; diff --git a/src/osd/modules/input/input_sdl.cpp b/src/osd/modules/input/input_sdl.cpp index f0bd112116f..0df3f5b7014 100644 --- a/src/osd/modules/input/input_sdl.cpp +++ b/src/osd/modules/input/input_sdl.cpp @@ -541,7 +541,7 @@ public: char defname[20]; snprintf(defname, sizeof(defname) - 1, "%s", local_table[keynum].ui_name); - devinfo->device()->add_item(defname, itemid, generic_button_get_state, &devinfo->keyboard.state[local_table[keynum].sdl_scancode]); + devinfo->device()->add_item(defname, itemid, generic_button_get_state, &devinfo->keyboard.state[local_table[keynum].sdl_scancode]); } osd_printf_verbose("Keyboard: Registered %s\n", devinfo->name()); @@ -669,15 +669,15 @@ public: devinfo = devicelist()->create_device(machine, "System mouse", *this); // add the axes - devinfo->device()->add_item("X", ITEM_ID_XAXIS, generic_axis_get_state, &devinfo->mouse.lX); - devinfo->device()->add_item("Y", ITEM_ID_YAXIS, generic_axis_get_state, &devinfo->mouse.lY); + devinfo->device()->add_item("X", ITEM_ID_XAXIS, generic_axis_get_state, &devinfo->mouse.lX); + devinfo->device()->add_item("Y", ITEM_ID_YAXIS, generic_axis_get_state, &devinfo->mouse.lY); for (button = 0; button < 4; button++) { input_item_id itemid = (input_item_id)(ITEM_ID_BUTTON1 + button); snprintf(defname, sizeof(defname), "B%d", button + 1); - devinfo->device()->add_item(defname, itemid, generic_button_get_state, &devinfo->mouse.buttons[button]); + devinfo->device()->add_item(defname, itemid, generic_button_get_state, &devinfo->mouse.buttons[button]); } osd_printf_verbose("Mouse: Registered %s\n", devinfo->name()); @@ -788,7 +788,7 @@ public: itemid = ITEM_ID_OTHER_AXIS_ABSOLUTE; snprintf(tempname, sizeof(tempname), "A%d %s", axis, devinfo->name()); - devinfo->device()->add_item(tempname, itemid, generic_axis_get_state, &devinfo->joystick.axes[axis]); + devinfo->device()->add_item(tempname, itemid, generic_axis_get_state, &devinfo->joystick.axes[axis]); } // loop over all buttons @@ -806,7 +806,7 @@ public: itemid = ITEM_ID_OTHER_SWITCH; snprintf(tempname, sizeof(tempname), "button %d", button); - devinfo->device()->add_item(tempname, itemid, generic_button_get_state, &devinfo->joystick.buttons[button]); + devinfo->device()->add_item(tempname, itemid, generic_button_get_state, &devinfo->joystick.buttons[button]); } // loop over all hats @@ -816,16 +816,16 @@ public: snprintf(tempname, sizeof(tempname), "hat %d Up", hat); itemid = (input_item_id)((hat < INPUT_MAX_HATS) ? ITEM_ID_HAT1UP + 4 * hat : ITEM_ID_OTHER_SWITCH); - devinfo->device()->add_item(tempname, itemid, generic_button_get_state, &devinfo->joystick.hatsU[hat]); + devinfo->device()->add_item(tempname, itemid, generic_button_get_state, &devinfo->joystick.hatsU[hat]); snprintf(tempname, sizeof(tempname), "hat %d Down", hat); itemid = (input_item_id)((hat < INPUT_MAX_HATS) ? ITEM_ID_HAT1DOWN + 4 * hat : ITEM_ID_OTHER_SWITCH); - devinfo->device()->add_item(tempname, itemid, generic_button_get_state, &devinfo->joystick.hatsD[hat]); + devinfo->device()->add_item(tempname, itemid, generic_button_get_state, &devinfo->joystick.hatsD[hat]); snprintf(tempname, sizeof(tempname), "hat %d Left", hat); itemid = (input_item_id)((hat < INPUT_MAX_HATS) ? ITEM_ID_HAT1LEFT + 4 * hat : ITEM_ID_OTHER_SWITCH); - devinfo->device()->add_item(tempname, itemid, generic_button_get_state, &devinfo->joystick.hatsL[hat]); + devinfo->device()->add_item(tempname, itemid, generic_button_get_state, &devinfo->joystick.hatsL[hat]); snprintf(tempname, sizeof(tempname), "hat %d Right", hat); itemid = (input_item_id)((hat < INPUT_MAX_HATS) ? ITEM_ID_HAT1RIGHT + 4 * hat : ITEM_ID_OTHER_SWITCH); - devinfo->device()->add_item(tempname, itemid, generic_button_get_state, &devinfo->joystick.hatsR[hat]); + devinfo->device()->add_item(tempname, itemid, generic_button_get_state, &devinfo->joystick.hatsR[hat]); } // loop over all (track)balls @@ -839,9 +839,9 @@ public: itemid = ITEM_ID_OTHER_AXIS_RELATIVE; snprintf(tempname, sizeof(tempname), "R%d %s", ball * 2, devinfo->name()); - devinfo->device()->add_item(tempname, (input_item_id)itemid, generic_axis_get_state, &devinfo->joystick.balls[ball * 2]); + devinfo->device()->add_item(tempname, (input_item_id)itemid, generic_axis_get_state, &devinfo->joystick.balls[ball * 2]); snprintf(tempname, sizeof(tempname), "R%d %s", ball * 2 + 1, devinfo->name()); - devinfo->device()->add_item(tempname, (input_item_id)(itemid + 1), generic_axis_get_state, &devinfo->joystick.balls[ball * 2 + 1]); + devinfo->device()->add_item(tempname, (input_item_id)(itemid + 1), generic_axis_get_state, &devinfo->joystick.balls[ball * 2 + 1]); } } diff --git a/src/osd/modules/input/input_win32.cpp b/src/osd/modules/input/input_win32.cpp index 0a51e68e4d7..24234969eef 100644 --- a/src/osd/modules/input/input_win32.cpp +++ b/src/osd/modules/input/input_win32.cpp @@ -86,7 +86,7 @@ public: _snprintf(name, ARRAY_LENGTH(name), "Scan%03d", keynum); // add the item to the device - devinfo->device()->add_item(name, itemid, generic_button_get_state, &devinfo->keyboard.state[keynum]); + devinfo->device()->add_item(name, itemid, generic_button_get_state, &devinfo->keyboard.state[keynum]); } } @@ -208,13 +208,21 @@ public: // populate the axes for (axisnum = 0; axisnum < 2; axisnum++) { - devinfo->device()->add_item(default_axis_name[axisnum], (input_item_id)(ITEM_ID_XAXIS + axisnum), generic_axis_get_state, &devinfo->mouse.lX + axisnum); + devinfo->device()->add_item( + default_axis_name[axisnum], + static_cast(ITEM_ID_XAXIS + axisnum), + generic_axis_get_state, + &devinfo->mouse.lX + axisnum); } // populate the buttons for (butnum = 0; butnum < 2; butnum++) { - devinfo->device()->add_item(default_button_name(butnum), (input_item_id)(ITEM_ID_BUTTON1 + butnum), generic_button_get_state, &devinfo->mouse.rgbButtons[butnum]); + devinfo->device()->add_item( + default_button_name(butnum), + static_cast(ITEM_ID_BUTTON1 + butnum), + generic_button_get_state, + &devinfo->mouse.rgbButtons[butnum]); } } @@ -383,13 +391,21 @@ public: // populate the axes for (axisnum = 0; axisnum < 2; axisnum++) { - devinfo->device()->add_item(default_axis_name[axisnum], (input_item_id)(ITEM_ID_XAXIS + axisnum), generic_axis_get_state, &devinfo->mouse.lX + axisnum); + devinfo->device()->add_item( + default_axis_name[axisnum], + static_cast(ITEM_ID_XAXIS + axisnum), + generic_axis_get_state, + &devinfo->mouse.lX + axisnum); } // populate the buttons for (butnum = 0; butnum < 2; butnum++) { - devinfo->device()->add_item(default_button_name(butnum), (input_item_id)(ITEM_ID_BUTTON1 + butnum), generic_button_get_state, &devinfo->mouse.rgbButtons[butnum]); + devinfo->device()->add_item( + default_button_name(butnum), + static_cast(ITEM_ID_BUTTON1 + butnum), + generic_button_get_state, + &devinfo->mouse.rgbButtons[butnum]); } } } diff --git a/src/osd/modules/input/input_windows.h b/src/osd/modules/input/input_windows.h index 56eaae0fd78..3a4cad97613 100644 --- a/src/osd/modules/input/input_windows.h +++ b/src/osd/modules/input/input_windows.h @@ -82,10 +82,4 @@ protected: } }; -//============================================================ -// INLINE FUNCTIONS -//============================================================ - -INT32 generic_button_get_state(void *device_internal, void *item_internal); -INT32 generic_axis_get_state(void *device_internal, void *item_internal); #endif diff --git a/src/osd/modules/input/input_x11.cpp b/src/osd/modules/input/input_x11.cpp index 63563e9b0d8..108b565012a 100644 --- a/src/osd/modules/input/input_x11.cpp +++ b/src/osd/modules/input/input_x11.cpp @@ -19,7 +19,7 @@ #include // standard sdl header -#include "sdlinc.h" +#include #include #include #include @@ -471,10 +471,10 @@ public: // Add X and Y axis sprintf(defname, "X %s", devinfo->name()); - devinfo->device()->add_item(defname, ITEM_ID_XAXIS, generic_axis_get_state, &devinfo->lightgun.lX); + devinfo->device()->add_item(defname, ITEM_ID_XAXIS, generic_axis_get_state, &devinfo->lightgun.lX); sprintf(defname, "Y %s", devinfo->name()); - devinfo->device()->add_item(defname, ITEM_ID_YAXIS, generic_axis_get_state, &devinfo->lightgun.lY); + devinfo->device()->add_item(defname, ITEM_ID_YAXIS, generic_axis_get_state, &devinfo->lightgun.lY); // Save the device id devinfo->x11_state.deviceid = info->id; @@ -489,7 +489,7 @@ public: x11_event_manager::instance().subscribe(event_types, ARRAY_LENGTH(event_types), this); } - osd_printf_verbose("Lightgun: End initialization\n"); + osd_printf_verbose("Lightgun: End initialization\n"); } bool should_poll_devices(running_machine &machine) override @@ -554,7 +554,7 @@ private: for (int button = 0; button < b->num_buttons; button++) { input_item_id itemid = (input_item_id)(ITEM_ID_BUTTON1 + button); - devinfo->device()->add_item(default_button_name(button), itemid, generic_button_get_state, &devinfo->lightgun.buttons[button]); + devinfo->device()->add_item(default_button_name(button), itemid, generic_button_get_state, &devinfo->lightgun.buttons[button]); } break; } diff --git a/src/osd/modules/input/input_xinput.cpp b/src/osd/modules/input/input_xinput.cpp index d1dcfd8b023..0b2427b7f1c 100644 --- a/src/osd/modules/input/input_xinput.cpp +++ b/src/osd/modules/input/input_xinput.cpp @@ -155,7 +155,7 @@ void xinput_joystick_device::configure() device()->add_item( xinput_axis_name[axisnum], xinput_axis_ids[axisnum], - generic_axis_get_state, + generic_axis_get_state, &gamepad.left_thumb_x + axisnum); } @@ -166,7 +166,7 @@ void xinput_joystick_device::configure() device()->add_item( xinput_pov_names[povnum], ITEM_ID_OTHER_SWITCH, - generic_button_get_state, + generic_button_get_state, &gamepad.povs[povnum]); } @@ -176,20 +176,20 @@ void xinput_joystick_device::configure() device()->add_item( xinput_button_names[butnum], static_cast(ITEM_ID_BUTTON1 + butnum), - generic_button_get_state, + generic_button_get_state, &gamepad.buttons[butnum]); } device()->add_item( "Left Trigger", ITEM_ID_ZAXIS, - generic_axis_get_state, + generic_axis_get_state, &gamepad.left_trigger); device()->add_item( "Right Trigger", ITEM_ID_RZAXIS, - generic_axis_get_state, + generic_axis_get_state, &gamepad.right_trigger); m_configured = true;