Turn retro_input_t into struct

This commit is contained in:
twinaphex 2016-06-25 09:04:00 +02:00
parent 5b1347a788
commit 3dff698644
4 changed files with 55 additions and 52 deletions

View File

@ -253,7 +253,7 @@ float input_sensor_get_input(unsigned port, unsigned id)
static retro_input_t input_driver_keys_pressed(void)
{
unsigned key;
retro_input_t ret = 0;
retro_input_t ret = {0};
for (key = 0; key < RARCH_BIND_LIST_END; key++)
{
@ -287,7 +287,7 @@ static retro_input_t input_driver_keys_pressed(void)
#endif
if (state)
ret |= (UINT64_C(1) << key);
ret.state |= (UINT64_C(1) << key);
}
return ret;
}
@ -580,14 +580,14 @@ retro_input_t input_keys_pressed(void)
{
unsigned i, key;
const struct retro_keybind *binds[MAX_USERS];
retro_input_t ret = 0;
retro_input_t ret = {0};
settings_t *settings = config_get_ptr();
for (i = 0; i < MAX_USERS; i++)
binds[i] = settings->input.binds[i];
if (!current_input || !current_input_data)
return 0;
return ret;
input_driver_turbo_btns.count++;

View File

@ -36,7 +36,10 @@
RETRO_BEGIN_DECLS
typedef uint64_t retro_input_t;
typedef struct retro_input
{
uint64_t state;
} retro_input_t;
enum input_device_type
{

View File

@ -1199,31 +1199,31 @@ static unsigned menu_input_frame_build(retro_input_t trigger_input)
settings_t *settings = config_get_ptr();
unsigned ret = MENU_ACTION_NOOP;
if (trigger_input & (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_UP))
if (trigger_input.state & (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_UP))
ret = MENU_ACTION_UP;
else if (trigger_input & (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_DOWN))
else if (trigger_input.state & (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_DOWN))
ret = MENU_ACTION_DOWN;
else if (trigger_input & (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_LEFT))
else if (trigger_input.state & (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_LEFT))
ret = MENU_ACTION_LEFT;
else if (trigger_input & (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_RIGHT))
else if (trigger_input.state & (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_RIGHT))
ret = MENU_ACTION_RIGHT;
else if (trigger_input & (UINT64_C(1) << settings->menu_scroll_up_btn))
else if (trigger_input.state & (UINT64_C(1) << settings->menu_scroll_up_btn))
ret = MENU_ACTION_SCROLL_UP;
else if (trigger_input & (UINT64_C(1) << settings->menu_scroll_down_btn))
else if (trigger_input.state & (UINT64_C(1) << settings->menu_scroll_down_btn))
ret = MENU_ACTION_SCROLL_DOWN;
else if (trigger_input & (UINT64_C(1) << settings->menu_cancel_btn))
else if (trigger_input.state & (UINT64_C(1) << settings->menu_cancel_btn))
ret = MENU_ACTION_CANCEL;
else if (trigger_input & (UINT64_C(1) << settings->menu_ok_btn))
else if (trigger_input.state & (UINT64_C(1) << settings->menu_ok_btn))
ret = MENU_ACTION_OK;
else if (trigger_input & (UINT64_C(1) << settings->menu_search_btn))
else if (trigger_input.state & (UINT64_C(1) << settings->menu_search_btn))
ret = MENU_ACTION_SEARCH;
else if (trigger_input & (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_Y))
else if (trigger_input.state & (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_Y))
ret = MENU_ACTION_SCAN;
else if (trigger_input & (UINT64_C(1) << settings->menu_default_btn))
else if (trigger_input.state & (UINT64_C(1) << settings->menu_default_btn))
ret = MENU_ACTION_START;
else if (trigger_input & (UINT64_C(1) << settings->menu_info_btn))
else if (trigger_input.state & (UINT64_C(1) << settings->menu_info_btn))
ret = MENU_ACTION_INFO;
else if (trigger_input & (UINT64_C(1) << RARCH_MENU_TOGGLE))
else if (trigger_input.state & (UINT64_C(1) << RARCH_MENU_TOGGLE))
ret = MENU_ACTION_TOGGLE;
return menu_input_frame_pointer(&ret);
@ -1252,7 +1252,7 @@ unsigned menu_input_frame_retropad(retro_input_t input,
/* don't run anything first frame, only capture held inputs
* for old_input_state. */
if (input)
if (input.state)
{
if (!first_held)
{
@ -1263,19 +1263,19 @@ unsigned menu_input_frame_retropad(retro_input_t input,
if (menu_input->delay.count >= menu_input->delay.timer)
{
retro_input_t input_repeat = 0;
BIT32_SET(input_repeat, RETRO_DEVICE_ID_JOYPAD_UP);
BIT32_SET(input_repeat, RETRO_DEVICE_ID_JOYPAD_DOWN);
BIT32_SET(input_repeat, RETRO_DEVICE_ID_JOYPAD_LEFT);
BIT32_SET(input_repeat, RETRO_DEVICE_ID_JOYPAD_RIGHT);
BIT32_SET(input_repeat, RETRO_DEVICE_ID_JOYPAD_B);
BIT32_SET(input_repeat, RETRO_DEVICE_ID_JOYPAD_A);
BIT32_SET(input_repeat, RETRO_DEVICE_ID_JOYPAD_L);
BIT32_SET(input_repeat, RETRO_DEVICE_ID_JOYPAD_R);
retro_input_t input_repeat = {0};
BIT32_SET(input_repeat.state, RETRO_DEVICE_ID_JOYPAD_UP);
BIT32_SET(input_repeat.state, RETRO_DEVICE_ID_JOYPAD_DOWN);
BIT32_SET(input_repeat.state, RETRO_DEVICE_ID_JOYPAD_LEFT);
BIT32_SET(input_repeat.state, RETRO_DEVICE_ID_JOYPAD_RIGHT);
BIT32_SET(input_repeat.state, RETRO_DEVICE_ID_JOYPAD_B);
BIT32_SET(input_repeat.state, RETRO_DEVICE_ID_JOYPAD_A);
BIT32_SET(input_repeat.state, RETRO_DEVICE_ID_JOYPAD_L);
BIT32_SET(input_repeat.state, RETRO_DEVICE_ID_JOYPAD_R);
set_scroll = true;
first_held = false;
trigger_input |= input & input_repeat;
set_scroll = true;
first_held = false;
trigger_input.state |= input.state & input_repeat.state;
menu_navigation_ctl(MENU_NAVIGATION_CTL_GET_SCROLL_ACCEL,
&new_scroll_accel);
@ -1308,7 +1308,7 @@ unsigned menu_input_frame_retropad(retro_input_t input,
static unsigned ti_char = 64;
static bool ti_next = false;
if (trigger_input & (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_DOWN))
if (trigger_input.state & (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_DOWN))
{
if (ti_char > 32)
ti_char--;
@ -1318,7 +1318,7 @@ unsigned menu_input_frame_retropad(retro_input_t input,
ti_next = false;
}
if (trigger_input & (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_UP))
if (trigger_input.state & (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_UP))
{
if (ti_char < 125)
ti_char++;
@ -1328,13 +1328,13 @@ unsigned menu_input_frame_retropad(retro_input_t input,
ti_next = false;
}
if (trigger_input & (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_A))
if (trigger_input.state & (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_A))
{
ti_char = 64;
ti_next = true;
}
if (trigger_input & (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_B))
if (trigger_input.state & (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_B))
{
input_keyboard_event(true, '\x7f', '\x7f', 0, RETRO_DEVICE_KEYBOARD);
ti_char = 64;
@ -1342,10 +1342,10 @@ unsigned menu_input_frame_retropad(retro_input_t input,
}
/* send return key to close keyboard input window */
if (trigger_input & (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_START))
if (trigger_input.state & (UINT64_C(1) << RETRO_DEVICE_ID_JOYPAD_START))
input_keyboard_event(true, '\n', '\n', 0, RETRO_DEVICE_KEYBOARD);
trigger_input = 0;
trigger_input.state = 0;
}
return menu_input_frame_build(trigger_input);

View File

@ -77,12 +77,12 @@
#define DEFAULT_EXT ""
#endif
#define runloop_cmd_triggered(cmd, id) BIT64_GET(cmd->state[2], id)
#define runloop_cmd_triggered(cmd, id) BIT64_GET(cmd->state[2].state, id)
#define runloop_cmd_press(cmd, id) BIT64_GET(cmd->state[0], id)
#define runloop_cmd_pressed(cmd, id) BIT64_GET(cmd->state[1], id)
#define runloop_cmd_press(cmd, id) BIT64_GET(cmd->state[0].state, id)
#define runloop_cmd_pressed(cmd, id) BIT64_GET(cmd->state[1].state, id)
#ifdef HAVE_MENU
#define runloop_cmd_menu_press(cmd) (BIT64_GET(cmd->state[2], RARCH_MENU_TOGGLE) || \
#define runloop_cmd_menu_press(cmd) (BIT64_GET(cmd->state[2].state, RARCH_MENU_TOGGLE) || \
runloop_cmd_get_state_menu_toggle_button_combo( \
settings, cmd->state[0], \
cmd->state[1], cmd->state[2]))
@ -317,19 +317,19 @@ static bool runloop_cmd_get_state_menu_toggle_button_combo(
case 0:
return false;
case 1:
if (!BIT64_GET(input, RETRO_DEVICE_ID_JOYPAD_DOWN))
if (!BIT64_GET(input.state, RETRO_DEVICE_ID_JOYPAD_DOWN))
return false;
if (!BIT64_GET(input, RETRO_DEVICE_ID_JOYPAD_Y))
if (!BIT64_GET(input.state, RETRO_DEVICE_ID_JOYPAD_Y))
return false;
if (!BIT64_GET(input, RETRO_DEVICE_ID_JOYPAD_L))
if (!BIT64_GET(input.state, RETRO_DEVICE_ID_JOYPAD_L))
return false;
if (!BIT64_GET(input, RETRO_DEVICE_ID_JOYPAD_R))
if (!BIT64_GET(input.state, RETRO_DEVICE_ID_JOYPAD_R))
return false;
break;
case 2:
if (!BIT64_GET(input, RETRO_DEVICE_ID_JOYPAD_L3))
if (!BIT64_GET(input.state, RETRO_DEVICE_ID_JOYPAD_L3))
return false;
if (!BIT64_GET(input, RETRO_DEVICE_ID_JOYPAD_R3))
if (!BIT64_GET(input.state, RETRO_DEVICE_ID_JOYPAD_R3))
return false;
break;
}
@ -1300,10 +1300,10 @@ int runloop_iterate(unsigned *sleep_ms)
unsigned i;
event_cmd_state_t cmd;
retro_time_t current, target, to_sleep_ms;
static retro_input_t last_input = {0};
event_cmd_state_t *cmd_ptr = &cmd;
static retro_time_t frame_limit_minimum_time = 0.0;
static retro_time_t frame_limit_last_time = 0.0;
static retro_input_t last_input = 0;
settings_t *settings = config_get_ptr();
cmd.state[1] = last_input;
@ -1330,14 +1330,14 @@ int runloop_iterate(unsigned *sleep_ms)
if (input_driver_is_flushing_input())
{
input_driver_unset_flushing_input();
if (cmd.state[0])
if (cmd.state[0].state)
{
cmd.state[0] = 0;
cmd.state[0].state = 0;
/* If core was paused before entering menu, evoke
* pause toggle to wake it up. */
if (runloop_ctl(RUNLOOP_CTL_IS_PAUSED, NULL))
BIT64_SET(cmd.state[0], RARCH_PAUSE_TOGGLE);
BIT64_SET(cmd.state[0].state, RARCH_PAUSE_TOGGLE);
input_driver_set_flushing_input();
}
}
@ -1368,7 +1368,7 @@ int runloop_iterate(unsigned *sleep_ms)
runloop_frame_time.callback(delta);
}
cmd.state[2] = cmd.state[0] & ~cmd.state[1]; /* trigger */
cmd.state[2].state = cmd.state[0].state & ~cmd.state[1].state; /* trigger */
if (runloop_cmd_triggered(cmd_ptr, RARCH_OVERLAY_NEXT))
command_event(CMD_EVENT_OVERLAY_NEXT, NULL);