mirror of
https://github.com/libretro/RetroArch
synced 2025-03-01 07:13:35 +00:00
(Lakka) Move categories over to userdata too
This commit is contained in:
parent
c6a27e46ae
commit
60e5b881b9
@ -44,7 +44,7 @@
|
||||
/* Move the categories left or right depending
|
||||
* on the menu_active_category variable. */
|
||||
|
||||
static void lakka_switch_categories(void)
|
||||
static void lakka_switch_categories(lakka_handle_t *lakka)
|
||||
{
|
||||
int i, j;
|
||||
|
||||
@ -57,7 +57,7 @@ static void lakka_switch_categories(void)
|
||||
for (i = 0; i < num_categories; i++)
|
||||
{
|
||||
float ca, cz;
|
||||
menu_category_t *category = (menu_category_t*)&categories[i];
|
||||
menu_category_t *category = (menu_category_t*)&lakka->categories[i];
|
||||
|
||||
if (!category)
|
||||
continue;
|
||||
@ -84,11 +84,11 @@ static void lakka_switch_categories(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void lakka_switch_items(void)
|
||||
static void lakka_switch_items(lakka_handle_t *lakka)
|
||||
{
|
||||
int j;
|
||||
menu_category_t *active_category = (menu_category_t*)
|
||||
&categories[menu_active_category];
|
||||
&lakka->categories[menu_active_category];
|
||||
|
||||
for (j = 0; j < active_category->num_items; j++)
|
||||
{
|
||||
@ -117,11 +117,11 @@ static void lakka_switch_items(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void lakka_switch_subitems(void)
|
||||
static void lakka_switch_subitems(lakka_handle_t *lakka)
|
||||
{
|
||||
int k;
|
||||
menu_category_t *active_category = (menu_category_t*)
|
||||
&categories[menu_active_category];
|
||||
&lakka->categories[menu_active_category];
|
||||
menu_item_t *item = (menu_item_t*)
|
||||
&active_category->items[active_category->active_item];
|
||||
|
||||
@ -165,9 +165,9 @@ static void lakka_switch_subitems(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void lakka_reset_submenu(int i, int j)
|
||||
static void lakka_reset_submenu(lakka_handle_t *lakka, int i, int j)
|
||||
{
|
||||
menu_category_t *category = (menu_category_t*)&categories[i];
|
||||
menu_category_t *category = (menu_category_t*)&lakka->categories[i];
|
||||
|
||||
if (!category)
|
||||
return;
|
||||
@ -192,10 +192,10 @@ static void lakka_reset_submenu(int i, int j)
|
||||
}
|
||||
}
|
||||
|
||||
static bool lakka_on_active_rom(void)
|
||||
static bool lakka_on_active_rom(lakka_handle_t *lakka)
|
||||
{
|
||||
menu_category_t *active_category = (menu_category_t*)
|
||||
&categories[menu_active_category];
|
||||
&lakka->categories[menu_active_category];
|
||||
|
||||
return !(g_extern.main_is_init
|
||||
&& !g_extern.libretro_dummy
|
||||
@ -204,7 +204,7 @@ static bool lakka_on_active_rom(void)
|
||||
active_category->active_item].rom)));
|
||||
}
|
||||
|
||||
static void lakka_open_submenu(void)
|
||||
static void lakka_open_submenu(lakka_handle_t *lakka)
|
||||
{
|
||||
int i, j, k;
|
||||
|
||||
@ -213,14 +213,15 @@ static void lakka_open_submenu(void)
|
||||
add_tween(LAKKA_DELAY, i_active_alpha, &arrow_alpha, &inOutQuad, NULL);
|
||||
|
||||
menu_category_t *active_category = (menu_category_t*)
|
||||
&categories[menu_active_category];
|
||||
&lakka->categories[menu_active_category];
|
||||
|
||||
if (menu_active_category > 0 && lakka_on_active_rom())
|
||||
lakka_reset_submenu(menu_active_category, active_category->active_item);
|
||||
if (menu_active_category > 0 && lakka_on_active_rom(lakka))
|
||||
lakka_reset_submenu(lakka, menu_active_category,
|
||||
active_category->active_item);
|
||||
|
||||
for (i = 0; i < num_categories; i++)
|
||||
{
|
||||
menu_category_t *category = (menu_category_t*)&categories[i];
|
||||
menu_category_t *category = (menu_category_t*)&lakka->categories[i];
|
||||
|
||||
if (!category)
|
||||
continue;
|
||||
@ -263,7 +264,7 @@ static void lakka_open_submenu(void)
|
||||
}
|
||||
}
|
||||
|
||||
static void lakka_close_submenu(void)
|
||||
static void lakka_close_submenu(lakka_handle_t *lakka)
|
||||
{
|
||||
int i, j, k;
|
||||
|
||||
@ -274,7 +275,7 @@ static void lakka_close_submenu(void)
|
||||
for (i = 0; i < num_categories; i++)
|
||||
{
|
||||
float ca, cz;
|
||||
menu_category_t *category = (menu_category_t*)&categories[i];
|
||||
menu_category_t *category = (menu_category_t*)&lakka->categories[i];
|
||||
bool is_active_category = (i == menu_active_category);
|
||||
|
||||
if (!category)
|
||||
@ -322,14 +323,17 @@ static int menu_lakka_iterate(unsigned action)
|
||||
menu_category_t *active_category = NULL;
|
||||
menu_item_t *active_item = NULL;
|
||||
menu_subitem_t * active_subitem = NULL;
|
||||
lakka_handle_t *lakka = NULL;
|
||||
|
||||
if (!driver.menu)
|
||||
{
|
||||
RARCH_ERR("Cannot iterate menu, menu handle is not initialized.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
active_category = (menu_category_t*)&categories[menu_active_category];
|
||||
lakka = (lakka_handle_t*)driver.menu->userdata;
|
||||
|
||||
if (!lakka)
|
||||
return 0;
|
||||
|
||||
active_category = (menu_category_t*)&lakka->categories[menu_active_category];
|
||||
|
||||
if (active_category)
|
||||
active_item = (menu_item_t*)
|
||||
@ -388,7 +392,7 @@ static int menu_lakka_iterate(unsigned action)
|
||||
if (depth == 0 && menu_active_category > 0)
|
||||
{
|
||||
menu_active_category--;
|
||||
lakka_switch_categories();
|
||||
lakka_switch_categories(lakka);
|
||||
}
|
||||
else if (depth == 1 && menu_active_category > 0
|
||||
&& (active_item->active_subitem == 1
|
||||
@ -403,7 +407,7 @@ static int menu_lakka_iterate(unsigned action)
|
||||
if (depth == 0 && menu_active_category < num_categories-1)
|
||||
{
|
||||
menu_active_category++;
|
||||
lakka_switch_categories();
|
||||
lakka_switch_categories(lakka);
|
||||
}
|
||||
else if (depth == 1 && menu_active_category > 0
|
||||
&& (active_item->active_subitem == 1
|
||||
@ -420,7 +424,7 @@ static int menu_lakka_iterate(unsigned action)
|
||||
(active_category->num_items - 1)))
|
||||
{
|
||||
active_category->active_item++;
|
||||
lakka_switch_items();
|
||||
lakka_switch_items(lakka);
|
||||
}
|
||||
|
||||
/* If we are on subitems level, and we do not
|
||||
@ -437,7 +441,7 @@ static int menu_lakka_iterate(unsigned action)
|
||||
&& (!strcmp(g_extern.fullpath, active_item->rom)))))
|
||||
{
|
||||
active_item->active_subitem++;
|
||||
lakka_switch_subitems();
|
||||
lakka_switch_subitems(lakka);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -445,12 +449,12 @@ static int menu_lakka_iterate(unsigned action)
|
||||
if (depth == 0 && active_category->active_item > 0)
|
||||
{
|
||||
active_category->active_item--;
|
||||
lakka_switch_items();
|
||||
lakka_switch_items(lakka);
|
||||
}
|
||||
if (depth == 1 && active_item->active_subitem > 0)
|
||||
{
|
||||
active_item->active_subitem--;
|
||||
lakka_switch_subitems();
|
||||
lakka_switch_subitems(lakka);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -499,7 +503,7 @@ static int menu_lakka_iterate(unsigned action)
|
||||
}
|
||||
else if (depth == 0 && active_item->num_subitems)
|
||||
{
|
||||
lakka_open_submenu();
|
||||
lakka_open_submenu(lakka);
|
||||
depth = 1;
|
||||
}
|
||||
else if (depth == 0 &&
|
||||
@ -517,7 +521,7 @@ static int menu_lakka_iterate(unsigned action)
|
||||
case MENU_ACTION_CANCEL:
|
||||
if (depth == 1)
|
||||
{
|
||||
lakka_close_submenu();
|
||||
lakka_close_submenu(lakka);
|
||||
depth = 0;
|
||||
}
|
||||
break;
|
||||
|
@ -45,7 +45,6 @@
|
||||
#include "tween.h"
|
||||
|
||||
// Category variables
|
||||
menu_category_t *categories;
|
||||
int depth = 0;
|
||||
int num_categories = 0;
|
||||
int menu_active_category = 0;
|
||||
@ -94,36 +93,6 @@ static const GLfloat tex_coord[] = {
|
||||
1, 0,
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
TEXTURE_MAIN = 0,
|
||||
TEXTURE_FONT,
|
||||
TEXTURE_BG,
|
||||
TEXTURE_SETTINGS,
|
||||
TEXTURE_SETTING,
|
||||
TEXTURE_SUBSETTING,
|
||||
TEXTURE_ARROW,
|
||||
TEXTURE_RUN,
|
||||
TEXTURE_RESUME,
|
||||
TEXTURE_SAVESTATE,
|
||||
TEXTURE_LOADSTATE,
|
||||
TEXTURE_SCREENSHOT,
|
||||
TEXTURE_RELOAD,
|
||||
TEXTURE_LAST
|
||||
};
|
||||
|
||||
struct lakka_texture_item
|
||||
{
|
||||
GLuint id;
|
||||
char path[PATH_MAX];
|
||||
};
|
||||
|
||||
|
||||
typedef struct lakka_handle
|
||||
{
|
||||
struct lakka_texture_item textures[TEXTURE_LAST];
|
||||
} lakka_handle_t;
|
||||
|
||||
static void lakka_responsive(void)
|
||||
{
|
||||
gl_t *gl = (gl_t*)driver_video_resolve(NULL);
|
||||
@ -305,6 +274,7 @@ void lakka_draw_background(void)
|
||||
float alpha = 0.9f;
|
||||
gl_t *gl = NULL;
|
||||
lakka_handle_t *lakka = NULL;
|
||||
|
||||
GLfloat color[] = {
|
||||
1.0f, 1.0f, 1.0f, global_alpha,
|
||||
1.0f, 1.0f, 1.0f, global_alpha,
|
||||
@ -423,16 +393,13 @@ static void lakka_draw_arrow(lakka_handle_t *lakka)
|
||||
static void lakka_draw_subitems(lakka_handle_t *lakka, int i, int j)
|
||||
{
|
||||
int k;
|
||||
menu_category_t *category = (menu_category_t*)&categories[i];
|
||||
menu_category_t *category = (menu_category_t*)&lakka->categories[i];
|
||||
menu_item_t *item = (menu_item_t*)&category->items[j];
|
||||
menu_category_t *active_category = (menu_category_t*)
|
||||
&categories[menu_active_category];
|
||||
&lakka->categories[menu_active_category];
|
||||
menu_item_t *active_item = (menu_item_t*)
|
||||
&active_category->items[active_category->active_item];
|
||||
|
||||
if (!lakka)
|
||||
return;
|
||||
|
||||
for(k = 0; k < item->num_subitems; k++)
|
||||
{
|
||||
menu_subitem_t *subitem = (menu_subitem_t*)&item->subitems[k];
|
||||
@ -513,9 +480,9 @@ static void lakka_draw_subitems(lakka_handle_t *lakka, int i, int j)
|
||||
static void lakka_draw_items(lakka_handle_t *lakka, int i)
|
||||
{
|
||||
int j;
|
||||
menu_category_t *category = (menu_category_t*)&categories[i];
|
||||
menu_category_t *category = (menu_category_t*)&lakka->categories[i];
|
||||
menu_category_t *active_category = (menu_category_t*)
|
||||
&categories[menu_active_category];
|
||||
&lakka->categories[menu_active_category];
|
||||
menu_item_t *active_item = (menu_item_t*)
|
||||
&active_category->items[active_category->active_item];
|
||||
|
||||
@ -566,7 +533,7 @@ static void lakka_draw_categories(lakka_handle_t *lakka)
|
||||
|
||||
for(i = 0; i < num_categories; i++)
|
||||
{
|
||||
menu_category_t *category = (menu_category_t*)&categories[i];
|
||||
menu_category_t *category = (menu_category_t*)&lakka->categories[i];
|
||||
|
||||
if (!category)
|
||||
continue;
|
||||
@ -700,7 +667,7 @@ static void lakka_frame(void)
|
||||
return;
|
||||
|
||||
active_category = (menu_category_t*)
|
||||
&categories[menu_active_category];
|
||||
&lakka->categories[menu_active_category];
|
||||
|
||||
if (!active_category)
|
||||
return;
|
||||
@ -811,7 +778,7 @@ static void lakka_context_destroy(void *data)
|
||||
|
||||
for (i = 1; i < num_categories; i++)
|
||||
{
|
||||
menu_category_t *category = (menu_category_t*)&categories[i];
|
||||
menu_category_t *category = (menu_category_t*)&lakka->categories[i];
|
||||
|
||||
if (!category)
|
||||
continue;
|
||||
@ -843,8 +810,16 @@ static void lakka_context_destroy(void *data)
|
||||
static bool lakka_init_settings(menu_handle_t *menu)
|
||||
{
|
||||
int j, k, jj = 0, kk;
|
||||
lakka_handle_t *lakka = NULL;
|
||||
menu_category_t *category = NULL;
|
||||
rarch_setting_t *setting_data = (rarch_setting_t*)menu->list_settings;
|
||||
menu_category_t *category = (menu_category_t*)&categories[0];
|
||||
|
||||
lakka = (lakka_handle_t*)menu->userdata;
|
||||
|
||||
if (!lakka)
|
||||
return false;
|
||||
|
||||
category = (menu_category_t*)&lakka->categories[0];
|
||||
|
||||
if (!setting_data || !category)
|
||||
return false;
|
||||
@ -954,7 +929,7 @@ static void lakka_settings_context_reset(void)
|
||||
if (!lakka)
|
||||
return;
|
||||
|
||||
category = (menu_category_t*)&categories[0];
|
||||
category = (menu_category_t*)&lakka->categories[0];
|
||||
|
||||
if (!category)
|
||||
return;
|
||||
@ -1030,7 +1005,7 @@ static void lakka_context_reset(void *data)
|
||||
lakka_settings_context_reset();
|
||||
for (i = 1; i < num_categories; i++)
|
||||
{
|
||||
menu_category_t *category = (menu_category_t*)&categories[i];
|
||||
menu_category_t *category = (menu_category_t*)&lakka->categories[i];
|
||||
|
||||
char core_id[256], texturepath[256], content_texturepath[256],
|
||||
mediapath[256], themepath[256];
|
||||
@ -1209,7 +1184,8 @@ static void lakka_free(void *data)
|
||||
g_extern.core_info = NULL;
|
||||
}
|
||||
|
||||
static int lakka_input_postprocess(retro_input_t state, retro_input_t old_state)
|
||||
static int lakka_input_postprocess(retro_input_t state,
|
||||
retro_input_t old_state)
|
||||
{
|
||||
if (global_alpha == 0.0f)
|
||||
add_tween(LAKKA_DELAY, 1.0f, &global_alpha, &inOutQuad, NULL);
|
||||
@ -1237,7 +1213,8 @@ static void lakka_init_core_info(void *data)
|
||||
|
||||
static void *lakka_init(void)
|
||||
{
|
||||
menu_handle_t *menu;
|
||||
menu_handle_t *menu = NULL;
|
||||
lakka_handle_t *lakka = NULL;
|
||||
const video_driver_t *video_driver = NULL;
|
||||
gl_t *gl = (gl_t*)driver_video_resolve(&video_driver);
|
||||
|
||||
@ -1255,20 +1232,26 @@ static void *lakka_init(void)
|
||||
lakka_responsive();
|
||||
|
||||
lakka_init_core_info(menu);
|
||||
categories = (menu_category_t*)
|
||||
calloc(num_categories, sizeof(menu_category_t));
|
||||
|
||||
if (!categories)
|
||||
{
|
||||
free(menu);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
menu->userdata = (lakka_handle_t*)calloc(1, sizeof(lakka_handle_t));
|
||||
|
||||
if (!menu->userdata)
|
||||
return NULL;
|
||||
|
||||
lakka = (lakka_handle_t*)menu->userdata;
|
||||
|
||||
if (!lakka)
|
||||
return NULL;
|
||||
|
||||
lakka->categories = (menu_category_t*)
|
||||
calloc(num_categories, sizeof(menu_category_t));
|
||||
|
||||
if (!lakka->categories)
|
||||
{
|
||||
free(menu);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return menu;
|
||||
}
|
||||
|
||||
@ -1276,17 +1259,23 @@ static bool lakka_init_lists(void *data)
|
||||
{
|
||||
int i;
|
||||
menu_handle_t *menu = (menu_handle_t*)data;
|
||||
lakka_handle_t *lakka = NULL;
|
||||
|
||||
if (!menu)
|
||||
return false;
|
||||
|
||||
lakka = (lakka_handle_t*)menu->userdata;
|
||||
|
||||
if (!lakka)
|
||||
return false;
|
||||
|
||||
if (!lakka_init_settings(menu))
|
||||
return false;
|
||||
|
||||
for (i = 1; i < num_categories; i++)
|
||||
{
|
||||
core_info_t *info = NULL;
|
||||
menu_category_t *category = (menu_category_t*)&categories[i];
|
||||
menu_category_t *category = (menu_category_t*)&lakka->categories[i];
|
||||
core_info_list_t *info_list = (core_info_list_t*)g_extern.core_info;
|
||||
|
||||
if (info_list)
|
||||
|
@ -27,6 +27,24 @@
|
||||
#define LAKKA_DELAY 0.02
|
||||
#endif
|
||||
|
||||
enum
|
||||
{
|
||||
TEXTURE_MAIN = 0,
|
||||
TEXTURE_FONT,
|
||||
TEXTURE_BG,
|
||||
TEXTURE_SETTINGS,
|
||||
TEXTURE_SETTING,
|
||||
TEXTURE_SUBSETTING,
|
||||
TEXTURE_ARROW,
|
||||
TEXTURE_RUN,
|
||||
TEXTURE_RESUME,
|
||||
TEXTURE_SAVESTATE,
|
||||
TEXTURE_LOADSTATE,
|
||||
TEXTURE_SCREENSHOT,
|
||||
TEXTURE_RELOAD,
|
||||
TEXTURE_LAST
|
||||
};
|
||||
|
||||
extern int depth;
|
||||
extern int num_categories;
|
||||
extern float all_categories_x;
|
||||
@ -84,6 +102,18 @@ typedef struct
|
||||
menu_item_t *items;
|
||||
} menu_category_t;
|
||||
|
||||
extern menu_category_t *categories;
|
||||
|
||||
struct lakka_texture_item
|
||||
{
|
||||
GLuint id;
|
||||
char path[PATH_MAX];
|
||||
};
|
||||
|
||||
|
||||
typedef struct lakka_handle
|
||||
{
|
||||
menu_category_t *categories;
|
||||
struct lakka_texture_item textures[TEXTURE_LAST];
|
||||
} lakka_handle_t;
|
||||
|
||||
#endif /* MENU_DISP_LAKKA_H */
|
||||
|
Loading…
x
Reference in New Issue
Block a user