mirror of
https://github.com/libretro/RetroArch
synced 2025-03-29 22:20:21 +00:00
(Lakka) Use strlcpy/strlcat
(Menu) Abstract menu_init_core_info - we can have different implementations of this per menu drivers
This commit is contained in:
parent
67189e84f0
commit
f656336b7f
1
driver.h
1
driver.h
@ -431,6 +431,7 @@ typedef struct menu_ctx_driver
|
||||
void (*list_delete)(void *, size_t);
|
||||
void (*list_clear)(void *);
|
||||
void (*list_set_selection)(void *);
|
||||
void (*init_core_info)(void *);
|
||||
|
||||
const menu_ctx_driver_backend_t *backend;
|
||||
// Human readable string.
|
||||
|
@ -1470,7 +1470,9 @@ static int menu_common_iterate(void *data, unsigned action)
|
||||
else if (menu_type == RGUI_LIBRETRO_DIR_PATH)
|
||||
{
|
||||
strlcpy(g_settings.libretro_directory, dir, sizeof(g_settings.libretro_directory));
|
||||
menu_init_core_info(rgui);
|
||||
|
||||
if (driver.menu_ctx && driver.menu_ctx->init_core_info)
|
||||
driver.menu_ctx->init_core_info(rgui);
|
||||
menu_flush_stack_type(rgui, RGUI_SETTINGS_PATH_OPTIONS);
|
||||
}
|
||||
#ifdef HAVE_DYNAMIC
|
||||
@ -1483,7 +1485,8 @@ static int menu_common_iterate(void *data, unsigned action)
|
||||
else if (menu_type == RGUI_LIBRETRO_INFO_DIR_PATH)
|
||||
{
|
||||
strlcpy(g_settings.libretro_info_path, dir, sizeof(g_settings.libretro_info_path));
|
||||
menu_init_core_info(rgui);
|
||||
if (driver.menu_ctx && driver.menu_ctx->init_core_info)
|
||||
driver.menu_ctx->init_core_info(rgui);
|
||||
menu_flush_stack_type(rgui, RGUI_SETTINGS_PATH_OPTIONS);
|
||||
}
|
||||
else if (menu_type == RGUI_SHADER_DIR_PATH)
|
||||
@ -2979,14 +2982,16 @@ static int menu_common_setting_set(void *data, unsigned setting, unsigned action
|
||||
if (action == RGUI_ACTION_START)
|
||||
{
|
||||
*g_settings.libretro_directory = '\0';
|
||||
menu_init_core_info(rgui);
|
||||
if (driver.menu_ctx && driver.menu_ctx->init_core_info)
|
||||
driver.menu_ctx->init_core_info(rgui);
|
||||
}
|
||||
break;
|
||||
case RGUI_LIBRETRO_INFO_DIR_PATH:
|
||||
if (action == RGUI_ACTION_START)
|
||||
{
|
||||
*g_settings.libretro_info_path = '\0';
|
||||
menu_init_core_info(rgui);
|
||||
if (driver.menu_ctx && driver.menu_ctx->init_core_info)
|
||||
driver.menu_ctx->init_core_info(rgui);
|
||||
}
|
||||
break;
|
||||
case RGUI_CONFIG_DIR_PATH:
|
||||
|
@ -904,12 +904,7 @@ static void *lakka_init(void)
|
||||
|
||||
init_font(gl, g_settings.video.font_path, 6, 1440, 900);
|
||||
|
||||
menu_init_core_info(rgui);
|
||||
|
||||
rgui->core_info = core_info_list_new(*g_settings.libretro_directory ? g_settings.libretro_directory : "/usr/lib/libretro");
|
||||
|
||||
num_categories = rgui->core_info ? rgui->core_info->count + 1 : 1;
|
||||
|
||||
lakka_init_core_info(rgui);
|
||||
lakka_init_assets(rgui);
|
||||
|
||||
categories = realloc(categories, num_categories * sizeof(menu_category));
|
||||
@ -923,22 +918,22 @@ static void *lakka_init(void)
|
||||
struct font_output_list out;
|
||||
core_info_t corenfo = rgui->core_info->list[i];
|
||||
|
||||
strcpy(core_id, basename(corenfo.path));
|
||||
strcpy(core_id, str_replace(core_id, ".so", ""));
|
||||
strcpy(core_id, str_replace(core_id, ".dll", ""));
|
||||
strcpy(core_id, str_replace(core_id, ".dylib", ""));
|
||||
strcpy(core_id, str_replace(core_id, "-libretro", ""));
|
||||
strcpy(core_id, str_replace(core_id, "_libretro", ""));
|
||||
strcpy(core_id, str_replace(core_id, "libretro-", ""));
|
||||
strcpy(core_id, str_replace(core_id, "libretro_", ""));
|
||||
strlcpy(core_id, basename(corenfo.path), sizeof(core_id));
|
||||
strlcpy(core_id, str_replace(core_id, ".so", ""), sizeof(core_id));
|
||||
strlcpy(core_id, str_replace(core_id, ".dll", ""), sizeof(core_id));
|
||||
strlcpy(core_id, str_replace(core_id, ".dylib", ""), sizeof(core_id));
|
||||
strlcpy(core_id, str_replace(core_id, "-libretro", ""), sizeof(core_id));
|
||||
strlcpy(core_id, str_replace(core_id, "_libretro", ""), sizeof(core_id));
|
||||
strlcpy(core_id, str_replace(core_id, "libretro-", ""), sizeof(core_id));
|
||||
strlcpy(core_id, str_replace(core_id, "libretro_", ""), sizeof(core_id));
|
||||
|
||||
strcpy(texturepath, "/usr/share/retroarch/");
|
||||
strcat(texturepath, core_id);
|
||||
strcat(texturepath, ".png");
|
||||
strlcpy(texturepath, "/usr/share/retroarch/", sizeof(texturepath));
|
||||
strlcat(texturepath, core_id, sizeof(texturepath));
|
||||
strlcat(texturepath, ".png", sizeof(texturepath));
|
||||
|
||||
strcpy(gametexturepath, "/usr/share/retroarch/");
|
||||
strcat(gametexturepath, core_id);
|
||||
strcat(gametexturepath, "-game.png");
|
||||
strlcpy(gametexturepath, sizeof(gametexturepath), "/usr/share/retroarch/");
|
||||
strlcat(gametexturepath, core_id, sizeof(gametexturepath));
|
||||
strlcat(gametexturepath, "-game.png", sizeof(gametexturepath));
|
||||
|
||||
mcat.name = corenfo.display_name;
|
||||
mcat.libretro = corenfo.path;
|
||||
@ -990,6 +985,17 @@ static int lakka_input_postprocess(void *data, uint64_t old_state)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void lakka_init_core_info(void *data)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
|
||||
core_info_list_free(rgui->core_info);
|
||||
rgui->core_info = NULL;
|
||||
|
||||
rgui->core_info = core_info_list_new(*g_settings.libretro_directory ? g_settings.libretro_directory : "/usr/lib/libretro");
|
||||
|
||||
num_categories = rgui->core_info ? rgui->core_info->count + 1 : 1;
|
||||
}
|
||||
|
||||
const menu_ctx_driver_t menu_ctx_lakka = {
|
||||
lakka_set_texture,
|
||||
@ -1014,6 +1020,7 @@ const menu_ctx_driver_t menu_ctx_lakka = {
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
lakka_init_core_info,
|
||||
&menu_ctx_backend_lakka,
|
||||
"lakka",
|
||||
};
|
||||
|
@ -621,6 +621,16 @@ void rgui_set_texture(void *data, bool enable)
|
||||
enable, rgui->width, rgui->height, 1.0f);
|
||||
}
|
||||
|
||||
static void rgui_init_core_info(void *data)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
|
||||
core_info_list_free(rgui->core_info);
|
||||
rgui->core_info = NULL;
|
||||
if (*g_settings.libretro_directory)
|
||||
rgui->core_info = core_info_list_new(g_settings.libretro_directory);
|
||||
}
|
||||
|
||||
const menu_ctx_driver_t menu_ctx_rgui = {
|
||||
rgui_set_texture,
|
||||
rgui_render_messagebox,
|
||||
@ -644,6 +654,7 @@ const menu_ctx_driver_t menu_ctx_rgui = {
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
rgui_init_core_info,
|
||||
&menu_ctx_backend_common,
|
||||
"rgui",
|
||||
};
|
||||
|
@ -480,6 +480,15 @@ static int rmenu_input_postprocess(void *data, uint64_t old_state)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void rmenu_init_core_info(void *data)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
|
||||
core_info_list_free(rgui->core_info);
|
||||
rgui->core_info = NULL;
|
||||
if (*g_settings.libretro_directory)
|
||||
rgui->core_info = core_info_list_new(g_settings.libretro_directory);
|
||||
}
|
||||
|
||||
const menu_ctx_driver_t menu_ctx_rmenu = {
|
||||
rmenu_set_texture,
|
||||
@ -504,6 +513,7 @@ const menu_ctx_driver_t menu_ctx_rmenu = {
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
rmenu_init_core_info,
|
||||
&menu_ctx_backend_common,
|
||||
"rmenu",
|
||||
};
|
||||
|
@ -709,6 +709,16 @@ static void rmenu_xui_list_set_selection(void *data)
|
||||
XuiListSetCurSel(m_menulist, list->list[list->size].directory_ptr);
|
||||
}
|
||||
|
||||
static void rmenu_xui_init_core_info(void *data)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
|
||||
core_info_list_free(rgui->core_info);
|
||||
rgui->core_info = NULL;
|
||||
if (*g_settings.libretro_directory)
|
||||
rgui->core_info = core_info_list_new(g_settings.libretro_directory);
|
||||
}
|
||||
|
||||
const menu_ctx_driver_t menu_ctx_rmenu_xui = {
|
||||
NULL,
|
||||
rmenu_xui_render_messagebox,
|
||||
@ -732,6 +742,7 @@ const menu_ctx_driver_t menu_ctx_rmenu_xui = {
|
||||
rmenu_xui_list_delete,
|
||||
rmenu_xui_list_clear,
|
||||
rmenu_xui_list_set_selection,
|
||||
rmenu_xui_init_core_info,
|
||||
&menu_ctx_backend_common,
|
||||
"rmenu_xui",
|
||||
};
|
||||
|
@ -895,14 +895,3 @@ void menu_build_scroll_indices(void *data, file_list_t *buf)
|
||||
|
||||
rgui->scroll_indices[rgui->scroll_indices_size++] = buf->size - 1;
|
||||
}
|
||||
|
||||
|
||||
void menu_init_core_info(void *data)
|
||||
{
|
||||
rgui_handle_t *rgui = (rgui_handle_t*)data;
|
||||
|
||||
core_info_list_free(rgui->core_info);
|
||||
rgui->core_info = NULL;
|
||||
if (*g_settings.libretro_directory)
|
||||
rgui->core_info = core_info_list_new(g_settings.libretro_directory);
|
||||
}
|
||||
|
@ -191,8 +191,6 @@ void menu_free(void *data);
|
||||
|
||||
void menu_ticker_line(char *buf, size_t len, unsigned tick, const char *str, bool selected);
|
||||
|
||||
void menu_init_core_info(void *data);
|
||||
|
||||
void load_menu_game_prepare(void *data);
|
||||
void load_menu_game_prepare_dummy(void *data);
|
||||
bool load_menu_game(void *data);
|
||||
|
Loading…
x
Reference in New Issue
Block a user