From a643f9e07e2b788d2140add4c5ab80a543e6860b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 9 Aug 2019 16:17:30 +0200 Subject: [PATCH] Refactor/reimplement mapper --- input/input_mapper.c | 16 +++------------- input/input_mapper.h | 1 + retroarch.c | 19 +++++++++++++++++++ 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/input/input_mapper.c b/input/input_mapper.c index 1203238ea4..d193fc4661 100644 --- a/input/input_mapper.c +++ b/input/input_mapper.c @@ -45,6 +45,7 @@ void input_mapper_poll(input_mapper_t *handle, void *ol_pointer, void *settings_data, + void *input_data, unsigned max_users, bool poll_overlay) { @@ -53,26 +54,15 @@ void input_mapper_poll(input_mapper_t *handle, input_overlay_t *overlay_pointer = (input_overlay_t*)ol_pointer; #endif settings_t *settings = (settings_t*)settings_data; + input_bits_t *current_inputs = (input_bits_t*)input_data; memset(handle->keys, 0, sizeof(handle->keys)); for (i = 0; i < max_users; i++) { - input_bits_t current_input; unsigned device = settings->uints.input_libretro_device[i] & RETRO_DEVICE_MASK; - - switch (device) - { - case RETRO_DEVICE_KEYBOARD: - case RETRO_DEVICE_JOYPAD: - case RETRO_DEVICE_ANALOG: - BIT256_CLEAR_ALL_PTR(¤t_input); - input_get_state_for_port(settings, i, ¤t_input); - break; - default: - break; - } + input_bits_t current_input = *current_inputs++; switch (device) { diff --git a/input/input_mapper.h b/input/input_mapper.h index 58517fbea0..693481c4c2 100644 --- a/input/input_mapper.h +++ b/input/input_mapper.h @@ -45,6 +45,7 @@ typedef struct input_mapper void input_mapper_poll(input_mapper_t *handle, void *overlay_pointer, void *settings_data, + void *data, unsigned max_users, bool poll_overlay); diff --git a/retroarch.c b/retroarch.c index 506ed95501..77f87395ec 100644 --- a/retroarch.c +++ b/retroarch.c @@ -10649,6 +10649,7 @@ static void input_driver_poll(void) size_t i; settings_t *settings = configuration_settings; uint8_t max_users = (uint8_t)input_driver_max_users; + input_bits_t current_inputs[MAX_USERS]; current_input->poll(current_input_data); @@ -10690,6 +10691,23 @@ static void input_driver_poll(void) #endif if (settings->bools.input_remap_binds_enable && input_driver_mapper) { + for (i = 0; i < max_users; i++) + { + unsigned device = settings->uints.input_libretro_device[i] & RETRO_DEVICE_MASK; + + switch (device) + { + case RETRO_DEVICE_KEYBOARD: + case RETRO_DEVICE_JOYPAD: + case RETRO_DEVICE_ANALOG: + BIT256_CLEAR_ALL_PTR(¤t_inputs[i]); + input_get_state_for_port(settings, i, ¤t_inputs[i]); + break; + default: + break; + } + + } input_mapper_poll(input_driver_mapper, #ifdef HAVE_OVERLAY overlay_ptr, @@ -10697,6 +10715,7 @@ static void input_driver_poll(void) NULL, #endif settings, + ¤t_inputs, max_users, #ifdef HAVE_OVERLAY (overlay_ptr && overlay_ptr->alive)