mirror of
https://github.com/libretro/RetroArch
synced 2025-01-30 21:32:45 +00:00
(XMB) Only do mouse processing once in render - not every time in frame
This commit is contained in:
parent
d243f62a80
commit
1fe0dbafbe
@ -339,6 +339,7 @@ typedef struct xmb_handle
|
|||||||
xmb_node_t favorites_tab_node;
|
xmb_node_t favorites_tab_node;
|
||||||
xmb_node_t add_tab_node;
|
xmb_node_t add_tab_node;
|
||||||
xmb_node_t netplay_tab_node;
|
xmb_node_t netplay_tab_node;
|
||||||
|
menu_input_pointer_t pointer;
|
||||||
|
|
||||||
font_data_t *font;
|
font_data_t *font;
|
||||||
font_data_t *font2;
|
font_data_t *font2;
|
||||||
@ -3530,7 +3531,6 @@ static void xmb_render(void *data,
|
|||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
float scale_factor;
|
float scale_factor;
|
||||||
menu_input_pointer_t pointer;
|
|
||||||
xmb_handle_t *xmb = (xmb_handle_t*)data;
|
xmb_handle_t *xmb = (xmb_handle_t*)data;
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
unsigned end = (unsigned)menu_entries_get_size();
|
unsigned end = (unsigned)menu_entries_get_size();
|
||||||
@ -3551,16 +3551,16 @@ static void xmb_render(void *data,
|
|||||||
false);
|
false);
|
||||||
}
|
}
|
||||||
|
|
||||||
menu_input_get_pointer_state(&pointer);
|
menu_input_get_pointer_state(&xmb->pointer);
|
||||||
|
|
||||||
if (pointer.type != MENU_POINTER_DISABLED)
|
if (xmb->pointer.type != MENU_POINTER_DISABLED)
|
||||||
{
|
{
|
||||||
size_t selection = menu_navigation_get_selection();
|
size_t selection = menu_navigation_get_selection();
|
||||||
int16_t margin_top = (int16_t)xmb->margins_screen_top;
|
int16_t margin_top = (int16_t)xmb->margins_screen_top;
|
||||||
int16_t margin_left = (int16_t)xmb->margins_screen_left;
|
int16_t margin_left = (int16_t)xmb->margins_screen_left;
|
||||||
int16_t margin_right = (int16_t)((float)width - xmb->margins_screen_left);
|
int16_t margin_right = (int16_t)((float)width - xmb->margins_screen_left);
|
||||||
int16_t pointer_x = pointer.x;
|
int16_t pointer_x = xmb->pointer.x;
|
||||||
int16_t pointer_y = pointer.y;
|
int16_t pointer_y = xmb->pointer.y;
|
||||||
|
|
||||||
/* This must be set every frame when using a pointer,
|
/* This must be set every frame when using a pointer,
|
||||||
* otherwise touchscreen input breaks when changing
|
* otherwise touchscreen input breaks when changing
|
||||||
@ -3611,7 +3611,7 @@ static void xmb_render(void *data,
|
|||||||
menu_entry_t entry;
|
menu_entry_t entry;
|
||||||
bool get_entry = false;
|
bool get_entry = false;
|
||||||
|
|
||||||
switch (pointer.press_direction)
|
switch (xmb->pointer.press_direction)
|
||||||
{
|
{
|
||||||
case MENU_INPUT_PRESS_DIRECTION_UP:
|
case MENU_INPUT_PRESS_DIRECTION_UP:
|
||||||
if (pointer_x > margin_right)
|
if (pointer_x > margin_right)
|
||||||
@ -3655,7 +3655,7 @@ static void xmb_render(void *data,
|
|||||||
menu_entry_get(&entry, 0, selection, NULL, true);
|
menu_entry_get(&entry, 0, selection, NULL, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (pointer.press_direction)
|
switch (xmb->pointer.press_direction)
|
||||||
{
|
{
|
||||||
case MENU_INPUT_PRESS_DIRECTION_UP:
|
case MENU_INPUT_PRESS_DIRECTION_UP:
|
||||||
/* Note: Direction is inverted, since 'up' should
|
/* Note: Direction is inverted, since 'up' should
|
||||||
@ -5070,12 +5070,9 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
|
|||||||
/* Cursor image */
|
/* Cursor image */
|
||||||
if (xmb->mouse_show)
|
if (xmb->mouse_show)
|
||||||
{
|
{
|
||||||
menu_input_pointer_t pointer;
|
|
||||||
bool cursor_visible = video_fullscreen
|
bool cursor_visible = video_fullscreen
|
||||||
&& menu_mouse_enable;
|
&& menu_mouse_enable;
|
||||||
|
|
||||||
menu_input_get_pointer_state(&pointer);
|
|
||||||
|
|
||||||
gfx_display_set_alpha(coord_white, MIN(xmb->alpha, 1.00f));
|
gfx_display_set_alpha(coord_white, MIN(xmb->alpha, 1.00f));
|
||||||
gfx_display_draw_cursor(
|
gfx_display_draw_cursor(
|
||||||
userdata,
|
userdata,
|
||||||
@ -5085,8 +5082,8 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
|
|||||||
&coord_white[0],
|
&coord_white[0],
|
||||||
xmb->cursor_size,
|
xmb->cursor_size,
|
||||||
xmb->textures.list[XMB_TEXTURE_POINTER],
|
xmb->textures.list[XMB_TEXTURE_POINTER],
|
||||||
pointer.x,
|
xmb->pointer.x,
|
||||||
pointer.y,
|
xmb->pointer.y,
|
||||||
video_width,
|
video_width,
|
||||||
video_height);
|
video_height);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user