(Menu drivers) Less pointer grabbing - cut down on get_ptr calls

This commit is contained in:
twinaphex 2021-03-20 17:45:05 +01:00
parent 94ae0460cc
commit a0a681b324
3 changed files with 88 additions and 52 deletions

View File

@ -2302,6 +2302,7 @@ static void materialui_context_reset_textures(materialui_handle_t *mui)
static void materialui_draw_icon(
void *userdata,
gfx_display_t *p_disp,
unsigned video_width,
unsigned video_height,
unsigned icon_size,
@ -2314,7 +2315,6 @@ static void materialui_draw_icon(
gfx_display_ctx_draw_t draw;
struct video_coords coords;
math_matrix_4x4 mymat;
gfx_display_t *p_disp = disp_get_ptr();
gfx_display_ctx_driver_t *dispctx = p_disp->dispctx;
if (dispctx && dispctx->blend_begin)
@ -2360,6 +2360,8 @@ static void materialui_draw_icon(
static void materialui_draw_thumbnail(
materialui_handle_t *mui,
gfx_thumbnail_t *thumbnail,
settings_t *settings,
gfx_display_t *p_disp,
void *userdata,
unsigned video_width,
unsigned video_height,
@ -2418,7 +2420,7 @@ static void materialui_draw_thumbnail(
mui->colors.missing_thumbnail_icon, alpha);
materialui_draw_icon(
userdata,
userdata, p_disp,
video_width,
video_height,
(unsigned)icon_size,
@ -2436,8 +2438,6 @@ static void materialui_draw_thumbnail(
* we draw nothing if thumbnail status is unknown,
* or we are waiting for a thumbnail to load) */
{
settings_t *settings = config_get_ptr();
/* Background */
if (settings &&
settings->bools.menu_materialui_thumbnail_background_enable)
@ -3756,6 +3756,7 @@ enum materialui_entry_value_type materialui_get_entry_value_type(
static void materialui_render_switch_icon(
materialui_handle_t *mui,
materialui_node_t *node,
gfx_display_t *p_disp,
void *userdata,
unsigned video_width,
unsigned video_height,
@ -3776,7 +3777,7 @@ static void materialui_render_switch_icon(
/* Draw background */
if (mui->textures.list[MUI_TEXTURE_SWITCH_BG])
materialui_draw_icon(
userdata,
userdata, p_disp,
video_width,
video_height,
mui->icon_size,
@ -3790,7 +3791,7 @@ static void materialui_render_switch_icon(
/* Draw switch */
if (mui->textures.list[switch_texture_index])
materialui_draw_icon(
userdata,
userdata, p_disp,
video_width,
video_height,
mui->icon_size,
@ -3831,6 +3832,7 @@ static void materialui_render_menu_entry_default(
int value_icon_y = 0;
uintptr_t icon_texture = 0;
bool draw_text_outside = (x_offset != 0);
gfx_display_t *p_disp = disp_get_ptr();
/* Initial ticker configuration
* > Note: ticker is only used for labels/values,
@ -3901,7 +3903,7 @@ static void materialui_render_menu_entry_default(
if (icon_texture)
{
materialui_draw_icon(
userdata,
userdata, p_disp,
video_width,
video_height,
mui->icon_size,
@ -4049,14 +4051,14 @@ static void materialui_render_menu_entry_default(
break;
case MUI_ENTRY_VALUE_SWITCH_ON:
{
materialui_render_switch_icon(mui, node, userdata,
materialui_render_switch_icon(mui, node, p_disp, userdata,
video_width, video_height, value_icon_y, x_offset, true);
entry_value_width = mui->icon_size;
}
break;
case MUI_ENTRY_VALUE_SWITCH_OFF:
{
materialui_render_switch_icon(mui, node, userdata,
materialui_render_switch_icon(mui, node, p_disp, userdata,
video_width, video_height, value_icon_y, x_offset, false);
entry_value_width = mui->icon_size;
}
@ -4066,7 +4068,7 @@ static void materialui_render_menu_entry_default(
/* Draw checkmark */
if (mui->textures.list[MUI_TEXTURE_CHECKMARK])
materialui_draw_icon(
userdata,
userdata, p_disp,
video_width,
video_height,
mui->icon_size,
@ -4152,6 +4154,7 @@ static void materialui_render_menu_entry_playlist_list(
unsigned header_height,
int x_offset)
{
bool draw_divider;
const char *entry_label = NULL;
int entry_x = x_offset + node->x;
int entry_y = header_height - mui->scroll_y + node->y;
@ -4160,7 +4163,8 @@ static void materialui_render_menu_entry_playlist_list(
int usable_width = (int)node->entry_width - (int)(mui->margin * 2);
int label_y = 0;
bool draw_text_outside = (x_offset != 0);
bool draw_divider;
settings_t *settings = config_get_ptr();
gfx_display_t *p_disp = disp_get_ptr();
/* Initial ticker configuration
* > Note: ticker is only used for labels,
@ -4218,6 +4222,8 @@ static void materialui_render_menu_entry_playlist_list(
materialui_draw_thumbnail(
mui,
&node->thumbnails.primary,
settings,
p_disp,
userdata,
video_width,
video_height,
@ -4234,6 +4240,8 @@ static void materialui_render_menu_entry_playlist_list(
materialui_draw_thumbnail(
mui,
&node->thumbnails.secondary,
settings,
p_disp,
userdata,
video_width,
video_height,
@ -4394,6 +4402,8 @@ static void materialui_render_menu_entry_playlist_dual_icon(
bool draw_divider = (usable_width > 0) &&
((divider_y + (mui->entry_divider_width * 2)) <
(video_height - mui->nav_bar_layout_height - mui->status_bar.height));
gfx_display_t *p_disp = disp_get_ptr();
settings_t *settings = config_get_ptr();
/* Initial ticker configuration
* > Note: ticker is only used for labels */
@ -4419,6 +4429,8 @@ static void materialui_render_menu_entry_playlist_dual_icon(
materialui_draw_thumbnail(
mui,
&node->thumbnails.primary,
settings,
p_disp,
userdata,
video_width,
video_height,
@ -4430,6 +4442,8 @@ static void materialui_render_menu_entry_playlist_dual_icon(
materialui_draw_thumbnail(
mui,
&node->thumbnails.secondary,
settings,
p_disp,
userdata,
video_width,
video_height,
@ -4659,6 +4673,8 @@ static void materialui_render_selected_entry_aux_playlist_desktop(
float thumbnail_x = background_x + (float)mui->margin +
(mui->landscape_optimization.enabled ? mui->entry_divider_width : 0);
float thumbnail_y = background_y + (float)mui->margin;
gfx_display_t *p_disp = disp_get_ptr();
settings_t *settings = config_get_ptr();
/* Sanity check */
if ((background_width <= 0) ||
@ -4734,6 +4750,8 @@ static void materialui_render_selected_entry_aux_playlist_desktop(
materialui_draw_thumbnail(
mui,
primary_thumbnail,
settings,
p_disp,
userdata,
video_width,
video_height,
@ -4745,6 +4763,8 @@ static void materialui_render_selected_entry_aux_playlist_desktop(
materialui_draw_thumbnail(
mui,
secondary_thumbnail,
settings,
p_disp,
userdata,
video_width,
video_height,
@ -5290,11 +5310,12 @@ static void materialui_render_entry_touch_feedback(
static void materialui_render_header(
materialui_handle_t *mui,
settings_t *settings,
gfx_display_t *p_disp,
void *userdata,
unsigned video_width, unsigned video_height)
{
char menu_title_buf[255];
settings_t *settings = config_get_ptr();
size_t menu_title_margin = 0;
int usable_sys_bar_width = (int)video_width - (int)mui->nav_bar_layout_width;
int usable_title_bar_width = usable_sys_bar_width;
@ -5424,7 +5445,7 @@ static void materialui_render_header(
}
materialui_draw_icon(
userdata,
userdata, p_disp,
video_width,
video_height,
mui->sys_bar_icon_size,
@ -5563,7 +5584,7 @@ static void materialui_render_header(
menu_title_margin = mui->icon_size;
materialui_draw_icon(
userdata,
userdata, p_disp,
video_width,
video_height,
mui->icon_size,
@ -5581,7 +5602,7 @@ static void materialui_render_header(
if (show_search_icon)
{
materialui_draw_icon(
userdata,
userdata, p_disp,
video_width,
video_height,
mui->icon_size,
@ -5601,7 +5622,7 @@ static void materialui_render_header(
if (show_switch_view_icon)
{
materialui_draw_icon(
userdata,
userdata, p_disp,
video_width,
video_height,
mui->icon_size,
@ -5704,6 +5725,7 @@ static void materialui_render_header(
* things get incredibly messy and inefficient... */
static void materialui_render_nav_bar_bottom(
materialui_handle_t *mui,
gfx_display_t *p_disp,
void *userdata,
unsigned video_width, unsigned video_height)
{
@ -5751,7 +5773,7 @@ static void materialui_render_nav_bar_bottom(
/* > Back - left hand side */
materialui_draw_icon(
userdata,
userdata, p_disp,
video_width,
video_height,
mui->icon_size,
@ -5765,7 +5787,7 @@ static void materialui_render_nav_bar_bottom(
/* > Resume - right hand side */
materialui_draw_icon(
userdata,
userdata, p_disp,
video_width,
video_height,
mui->icon_size,
@ -5786,7 +5808,7 @@ static void materialui_render_nav_bar_bottom(
/* Draw icon */
materialui_draw_icon(
userdata,
userdata, p_disp,
video_width,
video_height,
mui->icon_size,
@ -5814,6 +5836,7 @@ static void materialui_render_nav_bar_bottom(
static void materialui_render_nav_bar_right(
materialui_handle_t *mui,
gfx_display_t *p_disp,
void *userdata,
unsigned video_width,
unsigned video_height)
@ -5862,7 +5885,7 @@ static void materialui_render_nav_bar_right(
/* > Back - bottom */
materialui_draw_icon(
userdata,
userdata, p_disp,
video_width,
video_height,
mui->icon_size,
@ -5876,7 +5899,7 @@ static void materialui_render_nav_bar_right(
/* > Resume - top */
materialui_draw_icon(
userdata,
userdata, p_disp,
video_width,
video_height,
mui->icon_size,
@ -5897,7 +5920,7 @@ static void materialui_render_nav_bar_right(
/* Draw icon */
materialui_draw_icon(
userdata,
userdata, p_disp,
video_width,
video_height,
mui->icon_size,
@ -5925,6 +5948,7 @@ static void materialui_render_nav_bar_right(
static void materialui_render_nav_bar(
materialui_handle_t *mui,
gfx_display_t *p_disp,
void *userdata,
unsigned video_width,
unsigned video_height)
@ -5933,7 +5957,7 @@ static void materialui_render_nav_bar(
{
case MUI_NAV_BAR_LOCATION_RIGHT:
materialui_render_nav_bar_right(
mui, userdata, video_width, video_height);
mui, p_disp, userdata, video_width, video_height);
break;
case MUI_NAV_BAR_LOCATION_HIDDEN:
/* Draw nothing */
@ -5942,7 +5966,7 @@ static void materialui_render_nav_bar(
case MUI_NAV_BAR_LOCATION_BOTTOM:
default:
materialui_render_nav_bar_bottom(
mui, userdata, video_width, video_height);
mui, p_disp, userdata, video_width, video_height);
break;
}
}
@ -6702,11 +6726,11 @@ static void materialui_frame(void *data, video_frame_info_t *video_info)
video_width, video_height, header_height, selection);
/* Draw title + system bar */
materialui_render_header(mui, userdata,
materialui_render_header(mui, settings, p_disp, userdata,
video_width, video_height);
/* Draw navigation bar */
materialui_render_nav_bar(mui, userdata,
materialui_render_nav_bar(mui, p_disp, userdata,
video_width, video_height);
/* Flush second layer of text

View File

@ -2099,7 +2099,10 @@ static void ozone_render(void *data,
GFX_ANIMATION_CLEAR_ACTIVE(p_anim);
}
static void ozone_draw_header(ozone_handle_t *ozone,
static void ozone_draw_header(
ozone_handle_t *ozone,
gfx_display_t *p_disp,
gfx_animation_t *p_anim,
void *userdata,
unsigned video_width,
unsigned video_height,
@ -2120,8 +2123,6 @@ static void ozone_draw_header(ozone_handle_t *ozone,
unsigned seperator_margin = 30 * scale_factor;
enum gfx_animation_ticker_type
menu_ticker_type = (enum gfx_animation_ticker_type)settings->uints.menu_ticker_type;
gfx_display_t *p_disp = disp_get_ptr();
gfx_animation_t *p_anim = anim_get_ptr();
gfx_display_ctx_driver_t *dispctx = p_disp->dispctx;
float *col = ozone->theme->entries_icon;
@ -2326,7 +2327,10 @@ static void ozone_draw_header(ozone_handle_t *ozone,
}
}
static void ozone_draw_footer(ozone_handle_t *ozone,
static void ozone_draw_footer(
ozone_handle_t *ozone,
gfx_display_t *p_disp,
gfx_animation_t *p_anim,
void *userdata,
unsigned video_width,
unsigned video_height,
@ -2380,10 +2384,8 @@ static void ozone_draw_footer(ozone_handle_t *ozone,
ozone->footer_labels.fullscreen_thumbs.width - icon_size - (2.0f * icon_padding);
float metadata_toggle_x = fullscreen_thumbs_x -
ozone->footer_labels.metadata_toggle.width - icon_size - (2.0f * icon_padding);
gfx_display_t *p_disp = disp_get_ptr();
gfx_display_ctx_driver_t *dispctx = p_disp->dispctx;
float *col = ozone->theme_dynamic.entries_icon;
gfx_animation_t *p_anim = anim_get_ptr();
/* Separator */
gfx_display_draw_quad(
@ -2837,6 +2839,7 @@ static void ozone_frame(void *data, video_frame_info_t *video_info)
bool battery_level_enable = video_info->battery_level_enable;
bool timedate_enable = video_info->timedate_enable;
gfx_display_t *p_disp = disp_get_ptr();
gfx_animation_t *p_anim = anim_get_ptr();
gfx_display_ctx_driver_t *dispctx = p_disp->dispctx;
#if 0
@ -2924,13 +2927,14 @@ static void ozone_frame(void *data, video_frame_info_t *video_info)
);
/* Header, footer */
ozone_draw_header(ozone,
ozone_draw_header(ozone, p_disp, p_anim,
userdata,
video_width,
video_height,
battery_level_enable,
timedate_enable);
ozone_draw_footer(ozone,
p_disp, p_anim,
userdata,
video_width,
video_height,

View File

@ -897,6 +897,7 @@ static void xmb_draw_icon(
static void xmb_draw_text(
bool xmb_shadows_enable,
xmb_handle_t *xmb,
settings_t *settings,
const char *str, float x,
float y, float scale_factor, float alpha,
enum text_alignment text_align,
@ -904,7 +905,6 @@ static void xmb_draw_text(
{
uint32_t color;
uint8_t a8;
settings_t *settings;
if (alpha > xmb->alpha)
alpha = xmb->alpha;
@ -915,7 +915,6 @@ static void xmb_draw_text(
if (a8 == 0)
return;
settings = config_get_ptr();
color = FONT_COLOR_RGBA(
settings->uints.menu_font_color_red,
settings->uints.menu_font_color_green,
@ -939,6 +938,7 @@ static void xmb_messagebox(void *data, const char *message)
static void xmb_render_messagebox_internal(
void *userdata,
gfx_display_t *p_disp,
unsigned video_width,
unsigned video_height,
xmb_handle_t *xmb, const char *message)
@ -949,7 +949,6 @@ static void xmb_render_messagebox_internal(
float line_height = 0;
int usable_width = 0;
struct string_list list = {0};
gfx_display_t *p_disp = disp_get_ptr();
gfx_display_ctx_driver_t *dispctx = p_disp->dispctx;
bool input_dialog_display_kb = false;
@ -3328,7 +3327,8 @@ static int xmb_draw_item(
label_offset = - xmb->margins_label_top;
/* Draw sublabel */
xmb_draw_text(xmb_shadows_enable, xmb, entry_sublabel,
xmb_draw_text(xmb_shadows_enable, xmb, settings,
entry_sublabel,
sublabel_x, ticker_y_offset + sublabel_y,
1, node->label_alpha, TEXT_ALIGN_LEFT,
width, height, xmb->font2);
@ -3338,14 +3338,16 @@ static int xmb_draw_item(
{
if (!string_is_empty(entry_sublabel_top_fade) &&
ticker_top_fade_alpha > 0.0f)
xmb_draw_text(xmb_shadows_enable, xmb, entry_sublabel_top_fade,
xmb_draw_text(xmb_shadows_enable, xmb, settings,
entry_sublabel_top_fade,
sublabel_x, ticker_top_fade_y_offset + sublabel_y,
1, ticker_top_fade_alpha * node->label_alpha, TEXT_ALIGN_LEFT,
width, height, xmb->font2);
if (!string_is_empty(entry_sublabel_bottom_fade) &&
ticker_bottom_fade_alpha > 0.0f)
xmb_draw_text(xmb_shadows_enable, xmb, entry_sublabel_bottom_fade,
xmb_draw_text(xmb_shadows_enable, xmb, settings,
entry_sublabel_bottom_fade,
sublabel_x, ticker_bottom_fade_y_offset + sublabel_y,
1, ticker_bottom_fade_alpha * node->label_alpha, TEXT_ALIGN_LEFT,
width, height, xmb->font2);
@ -3353,7 +3355,7 @@ static int xmb_draw_item(
}
}
xmb_draw_text(xmb_shadows_enable, xmb, tmp,
xmb_draw_text(xmb_shadows_enable, xmb, settings, tmp,
(float)ticker_x_offset + node->x + xmb->margins_screen_left +
xmb->icon_spacing_horizontal + xmb->margins_label_left,
xmb->margins_screen_top + node->y + label_offset,
@ -3385,7 +3387,7 @@ static int xmb_draw_item(
}
if (do_draw_text)
xmb_draw_text(xmb_shadows_enable, xmb, tmp,
xmb_draw_text(xmb_shadows_enable, xmb, settings, tmp,
(float)ticker_x_offset + node->x +
+ xmb->margins_screen_left
+ xmb->icon_spacing_horizontal
@ -3476,6 +3478,7 @@ static int xmb_draw_item(
static void xmb_draw_items(
void *userdata,
gfx_display_t *p_disp,
unsigned video_width,
unsigned video_height,
bool xmb_shadows_enable,
@ -3488,9 +3491,8 @@ static void xmb_draw_items(
unsigned first, last;
math_matrix_4x4 mymat;
gfx_display_ctx_rotate_draw_t rotate_draw;
xmb_node_t *core_node = NULL;
size_t end = 0;
gfx_display_t *p_disp = disp_get_ptr();
xmb_node_t *core_node = NULL;
size_t end = 0;
gfx_display_ctx_driver_t *dispctx = p_disp->dispctx;
if (!list || !list->size || !xmb)
@ -4037,6 +4039,7 @@ static bool xmb_shader_pipeline_active(unsigned menu_shader_pipeline)
static void xmb_draw_bg(
void *userdata,
gfx_display_t *p_disp,
unsigned video_width,
unsigned video_height,
unsigned menu_shader_pipeline,
@ -4049,7 +4052,6 @@ static void xmb_draw_bg(
float *coord_white)
{
gfx_display_ctx_draw_t draw;
gfx_display_t *p_disp = disp_get_ptr();
gfx_display_ctx_driver_t *dispctx = p_disp->dispctx;
draw.x = 0;
@ -4176,6 +4178,7 @@ static void xmb_draw_bg(
static void xmb_draw_dark_layer(
xmb_handle_t *xmb,
gfx_display_t *p_disp,
void *userdata,
unsigned width,
unsigned height)
@ -4188,7 +4191,6 @@ static void xmb_draw_dark_layer(
0, 0, 0, 1,
0, 0, 0, 1,
};
gfx_display_t *p_disp = disp_get_ptr();
gfx_display_ctx_driver_t *dispctx = p_disp->dispctx;
gfx_display_set_alpha(black, MIN(xmb->alpha, 0.75));
@ -4725,6 +4727,7 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
xmb_draw_bg(
userdata,
p_disp,
video_width,
video_height,
menu_shader_pipeline,
@ -4757,7 +4760,7 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
}
/* Title text */
xmb_draw_text(xmb_shadows_enable, xmb,
xmb_draw_text(xmb_shadows_enable, xmb, settings,
title_truncated, xmb->margins_title_left,
xmb->margins_title_top,
1, 1, TEXT_ALIGN_LEFT,
@ -4766,7 +4769,8 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
if (menu_core_enable)
{
menu_entries_get_core_title(title_msg, sizeof(title_msg));
xmb_draw_text(xmb_shadows_enable, xmb, title_msg, xmb->margins_title_left,
xmb_draw_text(xmb_shadows_enable, xmb, settings,
title_msg, xmb->margins_title_left,
video_height - xmb->margins_title_bottom, 1, 1, TEXT_ALIGN_LEFT,
video_width, video_height, xmb->font);
}
@ -5042,7 +5046,7 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
font_driver_get_message_width(
xmb->font, msg, (unsigned)strlen(msg), 1);
xmb_draw_text(xmb_shadows_enable, xmb, msg,
xmb_draw_text(xmb_shadows_enable, xmb, settings, msg,
video_width - xmb->margins_title_left - x_pos,
xmb->margins_title_top, 1, 1, TEXT_ALIGN_RIGHT,
video_width, video_height, xmb->font);
@ -5099,7 +5103,7 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
if (percent_width)
x_pos = percent_width + (xmb->icon_size / 2.5);
xmb_draw_text(xmb_shadows_enable, xmb, timedate,
xmb_draw_text(xmb_shadows_enable, xmb, settings, timedate,
video_width - xmb->margins_title_left - xmb->icon_size / 4 - x_pos,
xmb->margins_title_top, 1, 1, TEXT_ALIGN_RIGHT,
video_width, video_height, xmb->font);
@ -5229,6 +5233,7 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
/* Vertical icons */
xmb_draw_items(
userdata,
p_disp,
video_width,
video_height,
xmb_shadows_enable,
@ -5246,6 +5251,7 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
xmb_draw_items(
userdata,
p_disp,
video_width,
video_height,
xmb_shadows_enable,
@ -5292,8 +5298,10 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
if (render_background)
{
xmb_draw_dark_layer(xmb, userdata, video_width, video_height);
xmb_render_messagebox_internal(userdata, video_width, video_height,
xmb_draw_dark_layer(xmb, p_disp,
userdata, video_width, video_height);
xmb_render_messagebox_internal(userdata, p_disp,
video_width, video_height,
xmb, msg);
}