Try to avoid hot function file_list_get_userdata_at_offset

This commit is contained in:
twinaphex 2021-01-19 07:52:13 +01:00
parent 55a766b0bc
commit 9a4472266f
3 changed files with 35 additions and 54 deletions

View File

@ -2724,8 +2724,7 @@ static void materialui_compute_entries_box_default(
for (i = 0; i < entries_end; i++)
{
unsigned num_sublabel_lines = 0;
materialui_node_t *node = (materialui_node_t*)
file_list_get_userdata_at_offset(list, i);
materialui_node_t *node = (materialui_node_t*)list->list[i].userdata;
bool has_icon = false;
if (!node)
@ -2824,8 +2823,7 @@ static void materialui_compute_entries_box_playlist_list(
for (i = 0; i < entries_end; i++)
{
unsigned num_sublabel_lines = 0;
materialui_node_t *node = (materialui_node_t*)
file_list_get_userdata_at_offset(list, i);
materialui_node_t *node = (materialui_node_t*)list->list[i].userdata;
if (!node)
continue;
@ -2888,8 +2886,7 @@ static void materialui_compute_entries_box_playlist_dual_icon(
for (i = 0; i < entries_end; i++)
{
materialui_node_t *node = (materialui_node_t*)
file_list_get_userdata_at_offset(list, i);
materialui_node_t *node = (materialui_node_t*)list->list[i].userdata;
if (!node)
continue;
@ -2955,8 +2952,7 @@ static void materialui_compute_entries_box_playlist_desktop(
for (i = 0; i < entries_end; i++)
{
materialui_node_t *node = (materialui_node_t*)
file_list_get_userdata_at_offset(list, i);
materialui_node_t *node = (materialui_node_t*)list->list[i].userdata;
if (!node)
continue;
@ -3015,7 +3011,7 @@ static float materialui_get_scroll(materialui_handle_t *mui)
/* > Account for entries *before* current selection */
for (i = 0; i < selection; i++)
{
node = (materialui_node_t*)file_list_get_userdata_at_offset(list, i);
node = (materialui_node_t*)list->list[i].userdata;
/* If this ever happens, the scroll position
* will be entirely wrong... */
@ -3026,7 +3022,7 @@ static float materialui_get_scroll(materialui_handle_t *mui)
}
/* > Account for current selection */
node = (materialui_node_t*)file_list_get_userdata_at_offset(list, selection);
node = (materialui_node_t*)list->list[selection].userdata;
if (node)
selection_centre += node->entry_height / 2.0f;
@ -3570,10 +3566,9 @@ static void materialui_render(void *data,
for (i = 0; i < entries_end; i++)
{
materialui_node_t *node = (materialui_node_t*)
file_list_get_userdata_at_offset(list, i);
int entry_x;
int entry_y;
materialui_node_t *node = (materialui_node_t*)list->list[i].userdata;
/* Sanity check */
if (!node)
@ -4649,7 +4644,7 @@ static void materialui_render_selected_entry_aux_playlist_desktop(
unsigned header_height, int x_offset,
file_list_t *list, size_t selection)
{
materialui_node_t *node = (materialui_node_t*)file_list_get_userdata_at_offset(list, selection);
materialui_node_t *node = (materialui_node_t*)list->list[selection].userdata;
float background_x = (float)(x_offset + (int)mui->landscape_optimization.border_width);
float background_y = (float)header_height;
/* Note: If landscape optimisations are enabled,
@ -4725,9 +4720,7 @@ static void materialui_render_selected_entry_aux_playlist_desktop(
if ((primary_thumbnail->status == GFX_THUMBNAIL_STATUS_UNKNOWN) &&
(secondary_thumbnail->status == GFX_THUMBNAIL_STATUS_UNKNOWN))
{
materialui_node_t *last_node = (materialui_node_t*)
file_list_get_userdata_at_offset(list,
mui->desktop_thumbnail_last_selection);
materialui_node_t *last_node = (materialui_node_t*)list->list[mui->desktop_thumbnail_last_selection].userdata;
if (last_node)
{
@ -4936,7 +4929,7 @@ static void materialui_render_menu_list(
{
bool entry_selected = (selection == i);
bool touch_feedback_active = touch_feedback_enabled && (mui->touch_feedback_selection == i);
materialui_node_t *node = (materialui_node_t*)file_list_get_userdata_at_offset(list, i);
materialui_node_t *node = (materialui_node_t*)list->list[i].userdata;
menu_entry_t entry;
/* Sanity check */
@ -5139,7 +5132,7 @@ static void materialui_render_selection_highlight(
if (!list)
return;
node = (materialui_node_t*)file_list_get_userdata_at_offset(list, selection);
node = (materialui_node_t*)list->list[selection].userdata;
if (!node)
return;
@ -5981,7 +5974,7 @@ static bool materialui_get_selected_thumbnails(
if (!list)
return false;
node = (materialui_node_t*)file_list_get_userdata_at_offset(list, selection);
node = (materialui_node_t*)list->list[selection].userdata;
if (!node)
return false;
@ -7792,8 +7785,7 @@ static void materialui_reset_thumbnails(void)
/* Free node thumbnails */
for (i = 0; i < list->size; i++)
{
materialui_node_t *node = (materialui_node_t*)
file_list_get_userdata_at_offset(list, i);
materialui_node_t *node = (materialui_node_t*)list->list[i].userdata;
if (!node)
continue;
@ -9505,7 +9497,7 @@ static int materialui_pointer_up(void *userdata,
if (!list)
break;
node = (materialui_node_t*)file_list_get_userdata_at_offset(list, ptr);
node = (materialui_node_t*)list->list[ptr].userdata;
if (!node)
break;
@ -9656,8 +9648,8 @@ static void materialui_list_insert(
if (!mui || !list)
return;
mui->need_compute = true;
node = (materialui_node_t*)file_list_get_userdata_at_offset(list, i);
mui->need_compute = true;
node = (materialui_node_t*)list->list[i].userdata;
if (!node)
{
@ -10269,8 +10261,7 @@ static void materialui_list_clear(file_list_t *list)
for (i = 0; i < size; i++)
{
materialui_node_t *node = (materialui_node_t*)
file_list_get_userdata_at_offset(list, i);
materialui_node_t *node = (materialui_node_t*)list->list[i].userdata;
if (!node)
continue;
@ -10334,7 +10325,8 @@ static void materialui_refresh_thumbnail_image(void *userdata, unsigned i)
if (!list)
return;
node = (materialui_node_t*)file_list_get_userdata_at_offset(list, (size_t)i);
node = (materialui_node_t*)
list->list[(size_t)i].userdata;
if (!node)
return;

View File

@ -120,7 +120,7 @@ static void ozone_set_thumbnail_content(void *data, const char *s)
menu_entry_t entry;
size_t selection = menu_navigation_get_selection();
file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0);
ozone_node_t *node = (ozone_node_t*)file_list_get_userdata_at_offset(selection_buf, selection);
ozone_node_t *node = (ozone_node_t*)selection_buf->list[selection].userdata;
if (node)
{
@ -1874,9 +1874,8 @@ static void ozone_render(void *data,
for (i = 0; i < entries_end; i++)
{
ozone_node_t *node = (ozone_node_t*)
file_list_get_userdata_at_offset(selection_buf, i);
float entry_y;
ozone_node_t *node = (ozone_node_t*)selection_buf->list[i].userdata;
/* Sanity check */
if (!node)
@ -2636,8 +2635,7 @@ static void ozone_selection_changed(ozone_handle_t *ozone, bool allow_animation)
{
file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0);
size_t new_selection = menu_navigation_get_selection();
ozone_node_t *node = (ozone_node_t*)
file_list_get_userdata_at_offset(selection_buf, new_selection);
ozone_node_t *node = (ozone_node_t*)selection_buf->list[new_selection].userdata;
if (!node)
return;
@ -3358,7 +3356,7 @@ static void ozone_list_insert(void *userdata,
ozone->need_compute = true;
node = (ozone_node_t*)file_list_get_userdata_at_offset(list, i);
node = (ozone_node_t*)list->list[i].userdata;
if (!node)
node = ozone_alloc_node();
@ -3453,7 +3451,7 @@ static void ozone_list_cache(void *data,
for (i = 0; i < entries_end; i++)
{
ozone_node_t *node = (ozone_node_t*) file_list_get_userdata_at_offset(selection_buf, i);
ozone_node_t *node = (ozone_node_t*)selection_buf->list[i].userdata;
if (!node)
continue;
@ -3474,8 +3472,7 @@ text_iterate:
last -= 1;
last += first;
first_node = (ozone_node_t*)file_list_get_userdata_at_offset(
selection_buf, first);
first_node = (ozone_node_t*)selection_buf->list[first].userdata;
ozone->old_list_offset_y = first_node->position_y;
ozone_list_deep_copy(selection_buf,

View File

@ -1319,7 +1319,7 @@ static void xmb_set_thumbnail_content(void *data, const char *s)
menu_entry_t entry;
size_t selection = menu_navigation_get_selection();
file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0);
xmb_node_t *node = (xmb_node_t*)file_list_get_userdata_at_offset(selection_buf, selection);
xmb_node_t *node = (xmb_node_t*)selection_buf->list[selection].userdata;
if (node)
{
@ -1410,8 +1410,7 @@ static void xmb_selection_pointer_changed(
float iy, real_iy;
float ia = xmb->items_passive_alpha;
float iz = xmb->items_passive_zoom;
xmb_node_t *node = (xmb_node_t*)
file_list_get_userdata_at_offset(selection_buf, i);
xmb_node_t *node = (xmb_node_t*)selection_buf->list[i].userdata;
if (!node)
continue;
@ -1557,8 +1556,7 @@ static void xmb_list_open_old(xmb_handle_t *xmb,
{
float ia = 0;
float real_y;
xmb_node_t *node = (xmb_node_t*)
file_list_get_userdata_at_offset(list, i);
xmb_node_t *node = (xmb_node_t*)list->list[i].userdata;
if (!node)
continue;
@ -1617,8 +1615,7 @@ static void xmb_list_open_new(xmb_handle_t *xmb,
{
float ia;
float real_y;
xmb_node_t *node = (xmb_node_t*)
file_list_get_userdata_at_offset(list, i);
xmb_node_t *node = (xmb_node_t*)list->list[i].userdata;
if (!node)
continue;
@ -1782,8 +1779,7 @@ static void xmb_list_switch_old(xmb_handle_t *xmb,
for (i = 0; i < end; i++)
{
xmb_node_t *node = (xmb_node_t*)
file_list_get_userdata_at_offset(list, i);
xmb_node_t *node = (xmb_node_t*)list->list[i].userdata;
if (!node)
continue;
@ -1855,8 +1851,7 @@ static void xmb_list_switch_new(xmb_handle_t *xmb,
for (i = 0; i < end; i++)
{
xmb_node_t *node = (xmb_node_t*)
file_list_get_userdata_at_offset(list, i);
xmb_node_t *node = (xmb_node_t*)list->list[i].userdata;
float ia = xmb->items_passive_alpha;
if (!node)
@ -3042,9 +3037,8 @@ static int xmb_draw_item(
bool do_draw_text = false;
unsigned ticker_limit = 35 * scale_mod[0];
unsigned line_ticker_width = 45 * scale_mod[3];
xmb_node_t * node = (xmb_node_t*)
file_list_get_userdata_at_offset(list, i);
settings_t *settings = config_get_ptr();
xmb_node_t * node = (xmb_node_t*)list->list[i].userdata;
bool use_smooth_ticker = settings->bools.menu_ticker_smooth;
enum gfx_animation_ticker_type
menu_ticker_type = (enum gfx_animation_ticker_type)settings->uints.menu_ticker_type;
@ -3499,8 +3493,7 @@ static void xmb_draw_items(
if (list == &xmb->selection_buf_old)
{
xmb_node_t *node = (xmb_node_t*)
file_list_get_userdata_at_offset(list, current);
xmb_node_t *node = (xmb_node_t*)list->list[current].userdata;
if (node && (uint8_t)(255 * node->alpha) == 0)
return;
@ -5431,8 +5424,7 @@ static void xmb_layout(xmb_handle_t *xmb)
{
float ia = xmb->items_passive_alpha;
float iz = xmb->items_passive_zoom;
xmb_node_t *node = (xmb_node_t*)file_list_get_userdata_at_offset(
selection_buf, i);
xmb_node_t *node = (xmb_node_t*)selection_buf->list[i].userdata;
if (!node)
continue;
@ -6307,7 +6299,7 @@ static void xmb_list_insert(void *userdata,
if (!xmb || !list)
return;
node = (xmb_node_t*)file_list_get_userdata_at_offset(list, i);
node = (xmb_node_t*)list->list[i].userdata;
if (!node)
node = xmb_alloc_node();