Get rid of menu_entries_set_start and menu_entries_get_start
This commit is contained in:
parent
75c6276ade
commit
3df4101321
|
@ -402,6 +402,7 @@ end:
|
|||
|
||||
static void mui_render(void *data)
|
||||
{
|
||||
size_t i = 0;
|
||||
float delta_time, dt;
|
||||
unsigned bottom, width, height, header_height;
|
||||
mui_handle_t *mui = (mui_handle_t*)data;
|
||||
|
@ -461,10 +462,11 @@ static void mui_render(void *data)
|
|||
< height - header_height - mui->tabs_height)
|
||||
mui->scroll_y = 0;
|
||||
|
||||
if (menu_entries_get_end() < height / mui->line_height)
|
||||
menu_entries_set_start(0);
|
||||
if (menu_entries_get_end() < height / mui->line_height) { }
|
||||
else
|
||||
menu_entries_set_start(mui->scroll_y / mui->line_height);
|
||||
i = mui->scroll_y / mui->line_height;
|
||||
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &i);
|
||||
}
|
||||
|
||||
static void mui_render_label_value(mui_handle_t *mui,
|
||||
|
@ -582,7 +584,9 @@ static void mui_render_menu_list(mui_handle_t *mui,
|
|||
|
||||
mui->list_block.carr.coords.vertices = 0;
|
||||
|
||||
for (i = menu_entries_get_start(); i < end; i++)
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &i);
|
||||
|
||||
for (; i < end; i++)
|
||||
{
|
||||
int y;
|
||||
size_t selection;
|
||||
|
@ -1078,11 +1082,12 @@ static void mui_list_set_selection(void *data, file_list_t *list)
|
|||
|
||||
static void mui_navigation_clear(void *data, bool pending_push)
|
||||
{
|
||||
size_t i = 0;
|
||||
mui_handle_t *mui = (mui_handle_t*)data;
|
||||
if (!mui)
|
||||
return;
|
||||
|
||||
menu_entries_set_start(0);
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &i);
|
||||
mui->scroll_y = 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -411,7 +411,7 @@ static void rgui_render(void *data)
|
|||
unsigned x, y;
|
||||
bool display_kb, msg_force;
|
||||
uint16_t hover_color, normal_color;
|
||||
size_t i, end, fb_pitch;
|
||||
size_t i, end, fb_pitch, old_start;
|
||||
unsigned fb_width, fb_height;
|
||||
int bottom;
|
||||
uint64_t *frame_count;
|
||||
|
@ -469,17 +469,26 @@ static void rgui_render(void *data)
|
|||
if (settings->menu.pointer.enable)
|
||||
{
|
||||
bool pointer_dragged = false;
|
||||
unsigned new_val = menu_input_pointer_state(MENU_POINTER_Y_AXIS)
|
||||
/ 11 - 2 + menu_entries_get_start();
|
||||
unsigned new_val;
|
||||
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &old_start);
|
||||
|
||||
new_val = menu_input_pointer_state(MENU_POINTER_Y_AXIS)
|
||||
/ 11 - 2 + old_start;
|
||||
|
||||
menu_input_ctl(MENU_INPUT_CTL_POINTER_PTR, &new_val);
|
||||
menu_input_ctl(MENU_INPUT_CTL_POINTER_DRAGGING, &pointer_dragged);
|
||||
|
||||
if (pointer_dragged)
|
||||
{
|
||||
size_t start;
|
||||
int16_t delta_y = menu_input_pointer_state(MENU_POINTER_DELTA_Y_AXIS);
|
||||
rgui->scroll_y += delta_y;
|
||||
menu_entries_set_start(-rgui->scroll_y / 11 + 2);
|
||||
|
||||
start = -rgui->scroll_y / 11 + 2;
|
||||
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &start);
|
||||
|
||||
if (rgui->scroll_y > 0)
|
||||
rgui->scroll_y = 0;
|
||||
}
|
||||
|
@ -490,21 +499,30 @@ static void rgui_render(void *data)
|
|||
unsigned new_mouse_ptr;
|
||||
int16_t mouse_y = menu_input_mouse_state(MENU_MOUSE_Y_AXIS);
|
||||
|
||||
new_mouse_ptr = mouse_y / 11 - 2 + menu_entries_get_start();
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &old_start);
|
||||
|
||||
new_mouse_ptr = mouse_y / 11 - 2 + old_start;
|
||||
|
||||
menu_input_ctl(MENU_INPUT_CTL_MOUSE_PTR, &new_mouse_ptr);
|
||||
}
|
||||
|
||||
/* Do not scroll if all items are visible. */
|
||||
if (menu_entries_get_end() <= RGUI_TERM_HEIGHT(fb_width, fb_height))
|
||||
menu_entries_set_start(0);;
|
||||
{
|
||||
size_t start = 0;
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &start);
|
||||
}
|
||||
|
||||
bottom = menu_entries_get_end() - RGUI_TERM_HEIGHT(fb_width, fb_height);
|
||||
if (menu_entries_get_start() > (unsigned)bottom)
|
||||
menu_entries_set_start(bottom);
|
||||
bottom = menu_entries_get_end() - RGUI_TERM_HEIGHT(fb_width, fb_height);
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &old_start);
|
||||
|
||||
end = ((menu_entries_get_start() + RGUI_TERM_HEIGHT(fb_width, fb_height)) <= (menu_entries_get_end())) ?
|
||||
menu_entries_get_start() + RGUI_TERM_HEIGHT(fb_width, fb_height) : menu_entries_get_end();
|
||||
if (old_start > (unsigned)bottom)
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &bottom);
|
||||
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &old_start);
|
||||
|
||||
end = ((old_start + RGUI_TERM_HEIGHT(fb_width, fb_height)) <= (menu_entries_get_end())) ?
|
||||
old_start + RGUI_TERM_HEIGHT(fb_width, fb_height) : menu_entries_get_end();
|
||||
|
||||
rgui_render_background();
|
||||
|
||||
|
@ -553,7 +571,8 @@ static void rgui_render(void *data)
|
|||
|
||||
x = RGUI_TERM_START_X(fb_width);
|
||||
y = RGUI_TERM_START_Y(fb_height);
|
||||
i = menu_entries_get_start();
|
||||
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &i);
|
||||
|
||||
for (; i < end; i++, y += FONT_HEIGHT_STRIDE)
|
||||
{
|
||||
|
@ -629,7 +648,7 @@ static void rgui_render(void *data)
|
|||
|
||||
static void *rgui_init(void **userdata)
|
||||
{
|
||||
size_t fb_pitch;
|
||||
size_t fb_pitch, start;
|
||||
unsigned fb_width, fb_height, new_font_height;
|
||||
uint16_t *fb_data = NULL;
|
||||
rgui_t *rgui = NULL;
|
||||
|
@ -663,7 +682,8 @@ static void *rgui_init(void **userdata)
|
|||
menu_display_ctl(MENU_DISPLAY_CTL_SET_HEADER_HEIGHT, &new_font_height);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_FB_PITCH, &fb_pitch);
|
||||
|
||||
menu_entries_set_start(0);
|
||||
start = 0;
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &start);
|
||||
|
||||
ret = rguidisp_init_font(menu);
|
||||
|
||||
|
@ -727,18 +747,21 @@ static void rgui_set_texture(void)
|
|||
|
||||
static void rgui_navigation_clear(void *data, bool pending_push)
|
||||
{
|
||||
size_t start;
|
||||
rgui_t *rgui = (rgui_t*)data;
|
||||
if (!rgui)
|
||||
return;
|
||||
|
||||
menu_entries_set_start(0);
|
||||
start = 0;
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &start);
|
||||
rgui->scroll_y = 0;
|
||||
}
|
||||
|
||||
static void rgui_navigation_set(void *data, bool scroll)
|
||||
{
|
||||
size_t selection;
|
||||
size_t selection, start;
|
||||
unsigned fb_width, fb_height;
|
||||
bool do_set_start = false;
|
||||
size_t end = menu_entries_get_end();
|
||||
if (!menu_navigation_ctl(MENU_NAVIGATION_CTL_GET_SELECTION, &selection))
|
||||
return;
|
||||
|
@ -749,12 +772,24 @@ static void rgui_navigation_set(void *data, bool scroll)
|
|||
menu_display_ctl(MENU_DISPLAY_CTL_HEIGHT, &fb_height);
|
||||
|
||||
if (selection < RGUI_TERM_HEIGHT(fb_width, fb_height) /2)
|
||||
menu_entries_set_start(0);
|
||||
{
|
||||
start = 0;
|
||||
do_set_start = true;
|
||||
}
|
||||
else if (selection >= (RGUI_TERM_HEIGHT(fb_width, fb_height) /2)
|
||||
&& selection < (end - RGUI_TERM_HEIGHT(fb_width, fb_height) /2))
|
||||
menu_entries_set_start(selection - RGUI_TERM_HEIGHT(fb_width, fb_height) /2);
|
||||
{
|
||||
start = selection - RGUI_TERM_HEIGHT(fb_width, fb_height) /2;
|
||||
do_set_start = true;
|
||||
}
|
||||
else if (selection >= (end - RGUI_TERM_HEIGHT(fb_width, fb_height) /2))
|
||||
menu_entries_set_start(end - RGUI_TERM_HEIGHT(fb_width, fb_height));
|
||||
{
|
||||
start = end - RGUI_TERM_HEIGHT(fb_width, fb_height);
|
||||
do_set_start = true;
|
||||
}
|
||||
|
||||
if (do_set_start)
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &start);
|
||||
}
|
||||
|
||||
static void rgui_navigation_set_last(void *data)
|
||||
|
|
|
@ -537,9 +537,10 @@ static void xmb_update_boxart_image(xmb_handle_t *xmb)
|
|||
|
||||
static void xmb_selection_pointer_changed(xmb_handle_t *xmb, bool allow_animations)
|
||||
{
|
||||
size_t selection;
|
||||
unsigned i, end, tag, height, skip, depth;
|
||||
int threshold = 0;
|
||||
size_t skip;
|
||||
unsigned i, end, tag, height, depth;
|
||||
size_t selection, num = 0;
|
||||
int threshold = 0;
|
||||
menu_list_t *menu_list = NULL;
|
||||
file_list_t *selection_buf = menu_entries_get_selection_buf_ptr(0);
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
@ -558,7 +559,7 @@ static void xmb_selection_pointer_changed(xmb_handle_t *xmb, bool allow_animatio
|
|||
video_driver_get_size(NULL, &height);
|
||||
|
||||
menu_animation_kill_by_tag(tag);
|
||||
menu_entries_set_start(0);
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &num);
|
||||
skip = 0;
|
||||
|
||||
for (i = 0; i < end; i++)
|
||||
|
@ -605,7 +606,7 @@ static void xmb_selection_pointer_changed(xmb_handle_t *xmb, bool allow_animatio
|
|||
}
|
||||
}
|
||||
|
||||
menu_entries_set_start(skip);
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &skip);
|
||||
}
|
||||
|
||||
static void xmb_list_open_old(xmb_handle_t *xmb,
|
||||
|
@ -658,6 +659,7 @@ static void xmb_list_open_new(xmb_handle_t *xmb,
|
|||
file_list_t *list, int dir, size_t current)
|
||||
{
|
||||
unsigned i, height;
|
||||
size_t skip = 0;
|
||||
int threshold = xmb->icon.size * 10;
|
||||
size_t end = file_list_get_size(list);
|
||||
|
||||
|
@ -709,7 +711,7 @@ static void xmb_list_open_new(xmb_handle_t *xmb,
|
|||
}
|
||||
|
||||
xmb->old_depth = xmb->depth;
|
||||
menu_entries_set_start(0);
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &skip);
|
||||
}
|
||||
|
||||
static xmb_node_t *xmb_node_allocate_userdata(xmb_handle_t *xmb, unsigned i)
|
||||
|
@ -1281,7 +1283,8 @@ static void xmb_draw_items(xmb_handle_t *xmb,
|
|||
unsigned width, unsigned height)
|
||||
{
|
||||
uint64_t *frame_count;
|
||||
unsigned i, ticker_limit;
|
||||
size_t i;
|
||||
unsigned ticker_limit;
|
||||
math_matrix_4x4 mymat;
|
||||
xmb_node_t *core_node = NULL;
|
||||
size_t end = 0;
|
||||
|
@ -1299,7 +1302,7 @@ static void xmb_draw_items(xmb_handle_t *xmb,
|
|||
|
||||
menu_display_matrix_4x4_rotate_z(&mymat, 0, 1, 1, 1, true);
|
||||
|
||||
i = menu_entries_get_start();
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &i);
|
||||
|
||||
if (list == xmb->selection_buf_old)
|
||||
i = 0;
|
||||
|
@ -1574,8 +1577,13 @@ static void xmb_render(void *data)
|
|||
}
|
||||
}
|
||||
|
||||
if (menu_entries_get_start() >= end)
|
||||
menu_entries_set_start(0);
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &i);
|
||||
|
||||
if (i >= end)
|
||||
{
|
||||
i = 0;
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &i);
|
||||
}
|
||||
|
||||
menu_animation_ctl(MENU_ANIMATION_CTL_CLEAR_ACTIVE, NULL);
|
||||
}
|
||||
|
|
|
@ -35,7 +35,6 @@ struct menu_list
|
|||
|
||||
struct menu_entries
|
||||
{
|
||||
size_t begin;
|
||||
menu_list_t *menu_list;
|
||||
rarch_setting_t *list_settings;
|
||||
};
|
||||
|
@ -353,22 +352,6 @@ void menu_entries_refresh(file_list_t *list)
|
|||
}
|
||||
}
|
||||
|
||||
/* Sets the starting index of the menu entry list. */
|
||||
void menu_entries_set_start(size_t i)
|
||||
{
|
||||
if (menu_entries_data)
|
||||
menu_entries_data->begin = i;
|
||||
}
|
||||
|
||||
/* Returns the starting index of the menu entry list. */
|
||||
size_t menu_entries_get_start(void)
|
||||
{
|
||||
if (!menu_entries_data)
|
||||
return 0;
|
||||
|
||||
return menu_entries_data->begin;
|
||||
}
|
||||
|
||||
/* Returns the last index (+1) of the menu entry list. */
|
||||
size_t menu_entries_get_end(void)
|
||||
{
|
||||
|
@ -658,6 +641,7 @@ bool menu_entries_ctl(enum menu_entries_ctl_state state, void *data)
|
|||
/* Flagged when menu entries need to be refreshed */
|
||||
static bool menu_entries_need_refresh = false;
|
||||
static bool menu_entries_nonblocking_refresh = false;
|
||||
static size_t menu_entries_begin = 0;
|
||||
|
||||
switch (state)
|
||||
{
|
||||
|
@ -676,6 +660,7 @@ bool menu_entries_ctl(enum menu_entries_ctl_state state, void *data)
|
|||
menu_entries_need_refresh = NULL;
|
||||
menu_entries_nonblocking_refresh = NULL;
|
||||
menu_entries_data = NULL;
|
||||
menu_entries_begin = 0;
|
||||
return true;
|
||||
case MENU_ENTRIES_CTL_NEEDS_REFRESH:
|
||||
if (!menu_entries_data || menu_entries_nonblocking_refresh)
|
||||
|
@ -721,6 +706,21 @@ bool menu_entries_ctl(enum menu_entries_ctl_state state, void *data)
|
|||
menu_entries_need_refresh = false;
|
||||
}
|
||||
return true;
|
||||
case MENU_ENTRIES_CTL_SET_START:
|
||||
{
|
||||
size_t *idx = (size_t*)data;
|
||||
if (idx)
|
||||
menu_entries_begin = *idx;
|
||||
}
|
||||
case MENU_ENTRIES_CTL_START_GET:
|
||||
{
|
||||
size_t *idx = (size_t*)data;
|
||||
if (!idx)
|
||||
return 0;
|
||||
|
||||
*idx = menu_entries_begin;
|
||||
}
|
||||
return true;
|
||||
case MENU_ENTRIES_CTL_INIT:
|
||||
return menu_entries_init();
|
||||
case MENU_ENTRIES_CTL_SHOW_BACK:
|
||||
|
|
|
@ -111,15 +111,15 @@ enum menu_entries_ctl_state
|
|||
MENU_ENTRIES_CTL_SET_REFRESH,
|
||||
MENU_ENTRIES_CTL_UNSET_REFRESH,
|
||||
MENU_ENTRIES_CTL_NEEDS_REFRESH,
|
||||
/* Sets the starting index of the menu entry list. */
|
||||
MENU_ENTRIES_CTL_SET_START,
|
||||
/* Returns the starting index of the menu entry list. */
|
||||
MENU_ENTRIES_CTL_START_GET,
|
||||
MENU_ENTRIES_CTL_SHOW_BACK
|
||||
};
|
||||
|
||||
typedef struct menu_list menu_list_t;
|
||||
|
||||
void menu_entries_set_start(size_t i);
|
||||
|
||||
size_t menu_entries_get_start(void);
|
||||
|
||||
size_t menu_entries_get_end(void);
|
||||
|
||||
void menu_entries_get(size_t i, menu_entry_t *entry);
|
||||
|
|
|
@ -665,7 +665,9 @@ didSelectRowAtIndexPath:(NSIndexPath *)indexPath
|
|||
self.title = BOXSTRING(title);
|
||||
|
||||
end = menu_entries_get_end();
|
||||
for (i = menu_entries_get_start(); i < end; i++)
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &i);
|
||||
|
||||
for (; i < end; i++)
|
||||
[everything addObject:[self make_menu_item_for_entry: i]];
|
||||
|
||||
self.sections = [NSMutableArray array];
|
||||
|
|
Loading…
Reference in New Issue