mirror of
https://github.com/libretro/RetroArch
synced 2025-04-23 11:43:20 +00:00
(input_driver.c) Don't keep regrabbing the same pointers in input_state_internal function
This commit is contained in:
parent
e9387193d5
commit
410242c164
@ -1533,13 +1533,14 @@ static int16_t input_state_device(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int16_t input_state_internal(unsigned port, unsigned device,
|
static int16_t input_state_internal(
|
||||||
|
input_driver_state_t *input_st,
|
||||||
|
settings_t *settings,
|
||||||
|
unsigned port, unsigned device,
|
||||||
unsigned idx, unsigned id)
|
unsigned idx, unsigned id)
|
||||||
{
|
{
|
||||||
rarch_joypad_info_t joypad_info;
|
rarch_joypad_info_t joypad_info;
|
||||||
unsigned mapped_port;
|
unsigned mapped_port;
|
||||||
input_driver_state_t *input_st = &input_driver_st;
|
|
||||||
settings_t *settings = config_get_ptr();
|
|
||||||
float input_analog_deadzone = settings->floats.input_analog_deadzone;
|
float input_analog_deadzone = settings->floats.input_analog_deadzone;
|
||||||
float input_analog_sensitivity = settings->floats.input_analog_sensitivity;
|
float input_analog_sensitivity = settings->floats.input_analog_sensitivity;
|
||||||
unsigned *input_remap_port_map = settings->uints.input_remap_port_map[port];
|
unsigned *input_remap_port_map = settings->uints.input_remap_port_map[port];
|
||||||
@ -1552,8 +1553,8 @@ static int16_t input_state_internal(unsigned port, unsigned device,
|
|||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_MENU
|
#ifdef HAVE_MENU
|
||||||
struct menu_state *menu_st = menu_state_get_ptr();
|
struct menu_state *menu_st = menu_state_get_ptr();
|
||||||
bool input_blocked = (menu_st->input_driver_flushing_input > 0) ||
|
bool input_blocked = (menu_st->input_driver_flushing_input > 0)
|
||||||
(input_st->flags & INP_FLAG_BLOCK_LIBRETRO_INPUT);
|
|| (input_st->flags & INP_FLAG_BLOCK_LIBRETRO_INPUT);
|
||||||
#else
|
#else
|
||||||
bool input_blocked = (input_st->flags & INP_FLAG_BLOCK_LIBRETRO_INPUT);
|
bool input_blocked = (input_st->flags & INP_FLAG_BLOCK_LIBRETRO_INPUT);
|
||||||
#endif
|
#endif
|
||||||
@ -1562,8 +1563,8 @@ static int16_t input_state_internal(unsigned port, unsigned device,
|
|||||||
int16_t result = 0;
|
int16_t result = 0;
|
||||||
|
|
||||||
device &= RETRO_DEVICE_MASK;
|
device &= RETRO_DEVICE_MASK;
|
||||||
bitmask_enabled = (device == RETRO_DEVICE_JOYPAD) &&
|
bitmask_enabled = (device == RETRO_DEVICE_JOYPAD)
|
||||||
(id == RETRO_DEVICE_ID_JOYPAD_MASK);
|
&& (id == RETRO_DEVICE_ID_JOYPAD_MASK);
|
||||||
joypad_info.axis_threshold = settings->floats.input_axis_threshold;
|
joypad_info.axis_threshold = settings->floats.input_axis_threshold;
|
||||||
|
|
||||||
/* Loop over all 'physical' ports mapped to specified
|
/* Loop over all 'physical' ports mapped to specified
|
||||||
@ -1713,10 +1714,10 @@ static int16_t input_state_internal(unsigned port, unsigned device,
|
|||||||
result = port_result;
|
result = port_result;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int16_t port_result_abs = (port_result >= 0) ?
|
int16_t port_result_abs = (port_result >= 0)
|
||||||
port_result : -port_result;
|
? port_result : -port_result;
|
||||||
int16_t result_abs = (result >= 0) ?
|
int16_t result_abs = (result >= 0)
|
||||||
result : -result;
|
? result : -result;
|
||||||
|
|
||||||
if (port_result_abs > result_abs)
|
if (port_result_abs > result_abs)
|
||||||
result = port_result;
|
result = port_result;
|
||||||
@ -1746,6 +1747,8 @@ static int16_t input_state_internal(unsigned port, unsigned device,
|
|||||||
* @return true if an input that is pressed will change the overlay
|
* @return true if an input that is pressed will change the overlay
|
||||||
*/
|
*/
|
||||||
static bool input_overlay_add_inputs_inner(overlay_desc_t *desc,
|
static bool input_overlay_add_inputs_inner(overlay_desc_t *desc,
|
||||||
|
input_driver_state_t *input_st,
|
||||||
|
settings_t *settings,
|
||||||
input_overlay_state_t *ol_state, unsigned port)
|
input_overlay_state_t *ol_state, unsigned port)
|
||||||
{
|
{
|
||||||
switch(desc->type)
|
switch(desc->type)
|
||||||
@ -1772,9 +1775,9 @@ static bool input_overlay_add_inputs_inner(overlay_desc_t *desc,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
/* Light up the button if pressed */
|
/* Light up the button if pressed */
|
||||||
if (ol_state ?
|
if ( ol_state
|
||||||
!BIT256_GET(ol_state->buttons, id) :
|
? !BIT256_GET(ol_state->buttons, id)
|
||||||
!input_state_internal(port, RETRO_DEVICE_JOYPAD, 0, id))
|
: !input_state_internal(input_st, settings, port, RETRO_DEVICE_JOYPAD, 0, id))
|
||||||
{
|
{
|
||||||
/* We need ALL of the inputs to be active,
|
/* We need ALL of the inputs to be active,
|
||||||
* abort. */
|
* abort. */
|
||||||
@ -1807,9 +1810,9 @@ static bool input_overlay_add_inputs_inner(overlay_desc_t *desc,
|
|||||||
unsigned index = (desc->type == OVERLAY_TYPE_ANALOG_RIGHT)
|
unsigned index = (desc->type == OVERLAY_TYPE_ANALOG_RIGHT)
|
||||||
? RETRO_DEVICE_INDEX_ANALOG_RIGHT
|
? RETRO_DEVICE_INDEX_ANALOG_RIGHT
|
||||||
: RETRO_DEVICE_INDEX_ANALOG_LEFT;
|
: RETRO_DEVICE_INDEX_ANALOG_LEFT;
|
||||||
int16_t analog_x = input_state_internal(port, RETRO_DEVICE_ANALOG,
|
int16_t analog_x = input_state_internal(input_st, settings, port, RETRO_DEVICE_ANALOG,
|
||||||
index, RETRO_DEVICE_ID_ANALOG_X);
|
index, RETRO_DEVICE_ID_ANALOG_X);
|
||||||
int16_t analog_y = input_state_internal(port, RETRO_DEVICE_ANALOG,
|
int16_t analog_y = input_state_internal(input_st, settings, port, RETRO_DEVICE_ANALOG,
|
||||||
index, RETRO_DEVICE_ID_ANALOG_Y);
|
index, RETRO_DEVICE_ID_ANALOG_Y);
|
||||||
|
|
||||||
/* Only modify overlay delta_x/delta_y values
|
/* Only modify overlay delta_x/delta_y values
|
||||||
@ -1834,7 +1837,8 @@ static bool input_overlay_add_inputs_inner(overlay_desc_t *desc,
|
|||||||
tmp = true;
|
tmp = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
tmp = input_state_internal(port, RETRO_DEVICE_KEYBOARD, 0, desc->retro_key_idx);
|
tmp = input_state_internal(input_st, settings, port,
|
||||||
|
RETRO_DEVICE_KEYBOARD, 0, desc->retro_key_idx);
|
||||||
|
|
||||||
if (tmp)
|
if (tmp)
|
||||||
{
|
{
|
||||||
@ -1853,6 +1857,8 @@ static bool input_overlay_add_inputs_inner(overlay_desc_t *desc,
|
|||||||
|
|
||||||
static bool input_overlay_add_inputs(input_overlay_t *ol,
|
static bool input_overlay_add_inputs(input_overlay_t *ol,
|
||||||
input_overlay_state_t *ol_state,
|
input_overlay_state_t *ol_state,
|
||||||
|
input_driver_state_t *input_st,
|
||||||
|
settings_t *settings,
|
||||||
bool show_touched, unsigned port)
|
bool show_touched, unsigned port)
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
@ -1861,8 +1867,13 @@ static bool input_overlay_add_inputs(input_overlay_t *ol,
|
|||||||
for (i = 0; i < ol->active->size; i++)
|
for (i = 0; i < ol->active->size; i++)
|
||||||
{
|
{
|
||||||
overlay_desc_t *desc = &(ol->active->descs[i]);
|
overlay_desc_t *desc = &(ol->active->descs[i]);
|
||||||
button_pressed |= input_overlay_add_inputs_inner(desc,
|
button_pressed |= input_overlay_add_inputs_inner(
|
||||||
show_touched ? ol_state : NULL, port);
|
desc, input_st,
|
||||||
|
settings,
|
||||||
|
show_touched
|
||||||
|
? ol_state
|
||||||
|
: NULL,
|
||||||
|
port);
|
||||||
}
|
}
|
||||||
|
|
||||||
return button_pressed;
|
return button_pressed;
|
||||||
@ -1895,7 +1906,7 @@ static void input_overlay_get_eightway_slope_limits(
|
|||||||
void input_overlay_set_eightway_diagonal_sensitivity(void)
|
void input_overlay_set_eightway_diagonal_sensitivity(void)
|
||||||
{
|
{
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
input_driver_state_t *input_st = input_state_get_ptr();
|
input_driver_state_t *input_st = &input_driver_st;
|
||||||
|
|
||||||
input_overlay_get_eightway_slope_limits(
|
input_overlay_get_eightway_slope_limits(
|
||||||
settings->uints.input_overlay_dpad_diagonal_sensitivity,
|
settings->uints.input_overlay_dpad_diagonal_sensitivity,
|
||||||
@ -2857,7 +2868,8 @@ static void input_poll_overlay(
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
button_pressed = input_overlay_add_inputs(ol, ol_state,
|
button_pressed = input_overlay_add_inputs(ol, ol_state, input_st,
|
||||||
|
settings,
|
||||||
(input_overlay_show_inputs == OVERLAY_SHOW_INPUT_TOUCHED),
|
(input_overlay_show_inputs == OVERLAY_SHOW_INPUT_TOUCHED),
|
||||||
input_overlay_show_inputs_port);
|
input_overlay_show_inputs_port);
|
||||||
|
|
||||||
@ -5142,7 +5154,7 @@ void bsv_movie_next_frame(input_driver_state_t *input_st)
|
|||||||
|
|
||||||
size_t replay_get_serialize_size(void)
|
size_t replay_get_serialize_size(void)
|
||||||
{
|
{
|
||||||
input_driver_state_t *input_st = input_state_get_ptr();
|
input_driver_state_t *input_st = &input_driver_st;
|
||||||
if (input_st->bsv_movie_state.flags & (BSV_FLAG_MOVIE_RECORDING | BSV_FLAG_MOVIE_PLAYBACK))
|
if (input_st->bsv_movie_state.flags & (BSV_FLAG_MOVIE_RECORDING | BSV_FLAG_MOVIE_PLAYBACK))
|
||||||
return sizeof(int32_t)+intfstream_tell(input_st->bsv_movie_state_handle->file);
|
return sizeof(int32_t)+intfstream_tell(input_st->bsv_movie_state_handle->file);
|
||||||
return 0;
|
return 0;
|
||||||
@ -5150,8 +5162,9 @@ size_t replay_get_serialize_size(void)
|
|||||||
|
|
||||||
bool replay_get_serialized_data(void* buffer)
|
bool replay_get_serialized_data(void* buffer)
|
||||||
{
|
{
|
||||||
input_driver_state_t *input_st = input_state_get_ptr();
|
input_driver_state_t *input_st = &input_driver_st;
|
||||||
bsv_movie_t *handle = input_st->bsv_movie_state_handle;
|
bsv_movie_t *handle = input_st->bsv_movie_state_handle;
|
||||||
|
|
||||||
if (input_st->bsv_movie_state.flags & (BSV_FLAG_MOVIE_RECORDING | BSV_FLAG_MOVIE_PLAYBACK))
|
if (input_st->bsv_movie_state.flags & (BSV_FLAG_MOVIE_RECORDING | BSV_FLAG_MOVIE_PLAYBACK))
|
||||||
{
|
{
|
||||||
long file_end = intfstream_tell(handle->file);
|
long file_end = intfstream_tell(handle->file);
|
||||||
@ -5175,7 +5188,7 @@ bool replay_get_serialized_data(void* buffer)
|
|||||||
bool replay_set_serialized_data(void* buf)
|
bool replay_set_serialized_data(void* buf)
|
||||||
{
|
{
|
||||||
uint8_t *buffer = buf;
|
uint8_t *buffer = buf;
|
||||||
input_driver_state_t *input_st = input_state_get_ptr();
|
input_driver_state_t *input_st = &input_driver_st;
|
||||||
bool playback = input_st->bsv_movie_state.flags & BSV_FLAG_MOVIE_PLAYBACK;
|
bool playback = input_st->bsv_movie_state.flags & BSV_FLAG_MOVIE_PLAYBACK;
|
||||||
bool recording = input_st->bsv_movie_state.flags & BSV_FLAG_MOVIE_RECORDING;
|
bool recording = input_st->bsv_movie_state.flags & BSV_FLAG_MOVIE_RECORDING;
|
||||||
|
|
||||||
@ -5755,6 +5768,7 @@ int16_t input_driver_state_wrapper(unsigned port, unsigned device,
|
|||||||
{
|
{
|
||||||
input_driver_state_t
|
input_driver_state_t
|
||||||
*input_st = &input_driver_st;
|
*input_st = &input_driver_st;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
int16_t result = 0;
|
int16_t result = 0;
|
||||||
#ifdef HAVE_BSV_MOVIE
|
#ifdef HAVE_BSV_MOVIE
|
||||||
/* Load input from BSV record, if enabled */
|
/* Load input from BSV record, if enabled */
|
||||||
@ -5776,13 +5790,13 @@ int16_t input_driver_state_wrapper(unsigned port, unsigned device,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Read input state */
|
/* Read input state */
|
||||||
result = input_state_internal(port, device, idx, id);
|
result = input_state_internal(input_st, settings, port, device, idx, id);
|
||||||
|
|
||||||
/* Register any analog stick input requests for
|
/* Register any analog stick input requests for
|
||||||
* this 'virtual' (core) port */
|
* this 'virtual' (core) port */
|
||||||
if ( (device == RETRO_DEVICE_ANALOG) &&
|
if ( (device == RETRO_DEVICE_ANALOG)
|
||||||
( (idx == RETRO_DEVICE_INDEX_ANALOG_LEFT) ||
|
&& ( (idx == RETRO_DEVICE_INDEX_ANALOG_LEFT)
|
||||||
(idx == RETRO_DEVICE_INDEX_ANALOG_RIGHT)))
|
|| (idx == RETRO_DEVICE_INDEX_ANALOG_RIGHT)))
|
||||||
input_st->analog_requested[port] = true;
|
input_st->analog_requested[port] = true;
|
||||||
|
|
||||||
#ifdef HAVE_BSV_MOVIE
|
#ifdef HAVE_BSV_MOVIE
|
||||||
|
Loading…
x
Reference in New Issue
Block a user