static void lakka_context_reset(void *data) { int i, j, k; char path[256], dirpath[256];; rgui_handle_t *rgui = (rgui_handle_t*)data; gl_t *gl = (gl_t*)driver.video_data; if (!rgui) return; fill_pathname_join(dirpath, g_settings.assets_directory, "lakka", sizeof(dirpath)); fill_pathname_slash(dirpath, sizeof(dirpath)); fill_pathname_join(textures[TEXTURE_SETTINGS].path, dirpath, "settings.png", sizeof(textures[TEXTURE_SETTINGS].path)); fill_pathname_join(textures[TEXTURE_SETTING].path, dirpath, "setting.png", sizeof(textures[TEXTURE_SETTING].path)); fill_pathname_join(textures[TEXTURE_SUBSETTING].path, dirpath, "subsetting.png", sizeof(textures[TEXTURE_SUBSETTING].path)); fill_pathname_join(textures[TEXTURE_ARROW].path, dirpath, "arrow.png", sizeof(textures[TEXTURE_ARROW].path)); fill_pathname_join(textures[TEXTURE_RUN].path, dirpath, "run.png", sizeof(textures[TEXTURE_RUN].path)); fill_pathname_join(textures[TEXTURE_RESUME].path, dirpath, "resume.png", sizeof(textures[TEXTURE_RESUME].path)); fill_pathname_join(textures[TEXTURE_SAVESTATE].path, dirpath, "savestate.png", sizeof(textures[TEXTURE_SAVESTATE].path)); fill_pathname_join(textures[TEXTURE_LOADSTATE].path, dirpath, "loadstate.png", sizeof(textures[TEXTURE_LOADSTATE].path)); fill_pathname_join(textures[TEXTURE_SCREENSHOT].path, dirpath, "screenshot.png", sizeof(textures[TEXTURE_SCREENSHOT].path)); fill_pathname_join(textures[TEXTURE_RELOAD].path, dirpath, "reload.png", sizeof(textures[TEXTURE_RELOAD].path)); for (k = 0; k < TEXTURE_LAST; k++) textures[k].id = png_texture_load(textures[k].path, &dim, &dim); if (font_driver) { font_driver->render_msg(font, "Run", &run_label); font_driver->render_msg(font, "Resume", &resume_label); } lakka_settings_context_reset(); for (i = 1; i < num_categories; i++) { menu_category_t *category = (menu_category_t*)&categories[i]; char core_id[256], texturepath[256], content_texturepath[256], dirpath[256]; core_info_t *info; core_info_list_t *info_list; fill_pathname_join(dirpath, g_settings.assets_directory, "lakka", sizeof(dirpath)); fill_pathname_slash(dirpath, sizeof(dirpath)); info_list = (core_info_list_t*)rgui->core_info; info = NULL; if (info_list) info = (core_info_t*)&info_list->list[i-1]; strlcpy(core_id, basename(info->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)); strlcpy(texturepath, dirpath, sizeof(texturepath)); strlcat(texturepath, core_id, sizeof(texturepath)); strlcat(texturepath, ".png", sizeof(texturepath)); strlcpy(content_texturepath, dirpath, sizeof(content_texturepath)); strlcat(content_texturepath, core_id, sizeof(content_texturepath)); strlcat(content_texturepath, "-content.png", sizeof(content_texturepath)); category->icon = png_texture_load(texturepath, &dim, &dim); category->item_icon = png_texture_load(content_texturepath, &dim, &dim); if (font_driver) font_driver->render_msg(font, category->name, &category->out); for (j = 0; j < category->num_items; j++) { menu_item_t *item = (menu_item_t*)&category->items[j]; if (font_driver) font_driver->render_msg(font, item->name, &item->out); for (k = 0; k < item->num_subitems; k++) { menu_subitem_t *subitem = (menu_subitem_t*)&item->subitems[k]; switch (k) { case 0: subitem->icon = textures[TEXTURE_RUN].id; break; case 1: subitem->icon = textures[TEXTURE_SAVESTATE].id; break; case 2: subitem->icon = textures[TEXTURE_LOADSTATE].id; break; case 3: subitem->icon = textures[TEXTURE_SCREENSHOT].id; break; case 4: subitem->icon = textures[TEXTURE_RELOAD].id; break; } if (font_driver) font_driver->render_msg(font, subitem->name, &subitem->out); } } } }
static void lakka_context_reset(void *data) { int i, j, k; char mediapath[PATH_MAX], themepath[PATH_MAX], iconpath[PATH_MAX]; lakka_handle_t *lakka = NULL; menu_handle_t *menu = (menu_handle_t*)data; if (!menu) return; lakka = (lakka_handle_t*)menu->userdata; if (!lakka) return; #if defined(HAVE_FBO) && defined(LAKKA_EFFECTS) lakka_fbo_reset(lakka); #endif driver.gfx_use_rgba = true; fill_pathname_join(mediapath, g_settings.assets_directory, "lakka", sizeof(mediapath)); fill_pathname_join(themepath, mediapath, THEME, sizeof(themepath)); fill_pathname_join(iconpath, themepath, lakka->icon_dir, sizeof(iconpath)); fill_pathname_slash(iconpath, sizeof(iconpath)); fill_pathname_join(lakka->textures[TEXTURE_BG].path, iconpath, "bg.png", sizeof(lakka->textures[TEXTURE_BG].path)); fill_pathname_join(lakka->textures[TEXTURE_SETTINGS].path, iconpath, "settings.png", sizeof(lakka->textures[TEXTURE_SETTINGS].path)); fill_pathname_join(lakka->textures[TEXTURE_SETTING].path, iconpath, "setting.png", sizeof(lakka->textures[TEXTURE_SETTING].path)); fill_pathname_join(lakka->textures[TEXTURE_SUBSETTING].path, iconpath, "subsetting.png", sizeof(lakka->textures[TEXTURE_SUBSETTING].path)); fill_pathname_join(lakka->textures[TEXTURE_ARROW].path, iconpath, "arrow.png", sizeof(lakka->textures[TEXTURE_ARROW].path)); fill_pathname_join(lakka->textures[TEXTURE_RUN].path, iconpath, "run.png", sizeof(lakka->textures[TEXTURE_RUN].path)); fill_pathname_join(lakka->textures[TEXTURE_RESUME].path, iconpath, "resume.png", sizeof(lakka->textures[TEXTURE_RESUME].path)); fill_pathname_join(lakka->textures[TEXTURE_SAVESTATE].path, iconpath, "savestate.png", sizeof(lakka->textures[TEXTURE_SAVESTATE].path)); fill_pathname_join(lakka->textures[TEXTURE_LOADSTATE].path, iconpath, "loadstate.png", sizeof(lakka->textures[TEXTURE_LOADSTATE].path)); fill_pathname_join(lakka->textures[TEXTURE_SCREENSHOT].path, iconpath, "screenshot.png", sizeof(lakka->textures[TEXTURE_SCREENSHOT].path)); fill_pathname_join(lakka->textures[TEXTURE_RELOAD].path, iconpath, "reload.png", sizeof(lakka->textures[TEXTURE_RELOAD].path)); for (k = 0; k < TEXTURE_LAST; k++) lakka->textures[k].id = lakka_png_texture_load(lakka->textures[k].path); lakka_settings_context_reset(); for (i = 1; i < lakka->num_categories; i++) { char core_id[PATH_MAX], texturepath[PATH_MAX], content_texturepath[PATH_MAX], mediapath[PATH_MAX], themepath[PATH_MAX]; menu_category_t *category = (menu_category_t*)&lakka->categories[i]; core_info_t *info = NULL; core_info_list_t *info_list = NULL; fill_pathname_join(mediapath, g_settings.assets_directory, "lakka", sizeof(mediapath)); fill_pathname_join(themepath, mediapath, THEME, sizeof(themepath)); fill_pathname_join(iconpath, themepath, lakka->icon_dir, sizeof(iconpath)); fill_pathname_slash(iconpath, sizeof(iconpath)); info_list = (core_info_list_t*)g_extern.core_info; info = NULL; if (info_list) info = (core_info_t*)&info_list->list[i-1]; if (info && info->systemname) { char *tmp = str_replace(info->systemname, "/", " "); strlcpy(core_id, tmp, sizeof(core_id)); free(tmp); } else strlcpy(core_id, "default", sizeof(core_id)); strlcpy(texturepath, iconpath, sizeof(texturepath)); strlcat(texturepath, core_id, sizeof(texturepath)); strlcat(texturepath, ".png", sizeof(texturepath)); strlcpy(content_texturepath, iconpath, sizeof(content_texturepath)); strlcat(content_texturepath, core_id, sizeof(content_texturepath)); strlcat(content_texturepath, "-content.png", sizeof(content_texturepath)); category->icon = lakka_png_texture_load(texturepath); category->item_icon = lakka_png_texture_load(content_texturepath); for (j = 0; j < category->num_items; j++) { menu_item_t *item = (menu_item_t*)&category->items[j]; for (k = 0; k < item->num_subitems; k++) { menu_subitem_t *subitem = (menu_subitem_t*)&item->subitems[k]; switch (k) { case 0: subitem->icon = lakka->textures[TEXTURE_RUN].id; break; case 1: subitem->icon = lakka->textures[TEXTURE_SAVESTATE].id; break; case 2: subitem->icon = lakka->textures[TEXTURE_LOADSTATE].id; break; case 3: subitem->icon = lakka->textures[TEXTURE_SCREENSHOT].id; break; case 4: subitem->icon = lakka->textures[TEXTURE_RELOAD].id; break; } } } } }
static void lakka_context_reset(void *data) { int i, j, k; char path[256], mediapath[256], themepath[256], iconpath[256]; menu_handle_t *menu = (menu_handle_t*)data; gl_t *gl = (gl_t*)driver.video_data; driver.gfx_use_rgba = true; if (!menu) return; fill_pathname_join(mediapath, g_settings.assets_directory, "lakka", sizeof(mediapath)); fill_pathname_join(themepath, mediapath, THEME, sizeof(themepath)); fill_pathname_join(iconpath, themepath, icon_dir, sizeof(iconpath)); fill_pathname_slash(iconpath, sizeof(iconpath)); fill_pathname_join(font_path, themepath, "font.ttf", sizeof(font_path)); gl_font_init_first(&font_driver, &font, gl, font_path, lakka_font_size); fill_pathname_join(textures[TEXTURE_BG].path, iconpath, "bg.png", sizeof(textures[TEXTURE_BG].path)); fill_pathname_join(textures[TEXTURE_SETTINGS].path, iconpath, "settings.png", sizeof(textures[TEXTURE_SETTINGS].path)); fill_pathname_join(textures[TEXTURE_SETTING].path, iconpath, "setting.png", sizeof(textures[TEXTURE_SETTING].path)); fill_pathname_join(textures[TEXTURE_SUBSETTING].path, iconpath, "subsetting.png", sizeof(textures[TEXTURE_SUBSETTING].path)); fill_pathname_join(textures[TEXTURE_ARROW].path, iconpath, "arrow.png", sizeof(textures[TEXTURE_ARROW].path)); fill_pathname_join(textures[TEXTURE_RUN].path, iconpath, "run.png", sizeof(textures[TEXTURE_RUN].path)); fill_pathname_join(textures[TEXTURE_RESUME].path, iconpath, "resume.png", sizeof(textures[TEXTURE_RESUME].path)); fill_pathname_join(textures[TEXTURE_SAVESTATE].path, iconpath, "savestate.png", sizeof(textures[TEXTURE_SAVESTATE].path)); fill_pathname_join(textures[TEXTURE_LOADSTATE].path, iconpath, "loadstate.png", sizeof(textures[TEXTURE_LOADSTATE].path)); fill_pathname_join(textures[TEXTURE_SCREENSHOT].path, iconpath, "screenshot.png", sizeof(textures[TEXTURE_SCREENSHOT].path)); fill_pathname_join(textures[TEXTURE_RELOAD].path, iconpath, "reload.png", sizeof(textures[TEXTURE_RELOAD].path)); for (k = 0; k < TEXTURE_LAST; k++) textures[k].id = png_texture_load(textures[k].path); lakka_settings_context_reset(); for (i = 1; i < num_categories; i++) { menu_category_t *category = (menu_category_t*)&categories[i]; char core_id[256], texturepath[256], content_texturepath[256], mediapath[256], themepath[256]; core_info_t *info; core_info_list_t *info_list; fill_pathname_join(mediapath, g_settings.assets_directory, "lakka", sizeof(mediapath)); fill_pathname_join(themepath, mediapath, THEME, sizeof(themepath)); fill_pathname_join(iconpath, themepath, icon_dir, sizeof(iconpath)); fill_pathname_slash(iconpath, sizeof(iconpath)); info_list = (core_info_list_t*)menu->core_info; info = NULL; if (info_list) info = (core_info_t*)&info_list->list[i-1]; if (info->systemname) { strlcpy(core_id, info->systemname, sizeof(core_id)); strlcpy(core_id, str_replace(core_id, "/", " "), sizeof(core_id)); } else { strlcpy(core_id, "default", sizeof(core_id)); } strlcpy(texturepath, iconpath, sizeof(texturepath)); strlcat(texturepath, core_id, sizeof(texturepath)); strlcat(texturepath, ".png", sizeof(texturepath)); strlcpy(content_texturepath, iconpath, sizeof(content_texturepath)); strlcat(content_texturepath, core_id, sizeof(content_texturepath)); strlcat(content_texturepath, "-content.png", sizeof(content_texturepath)); category->icon = png_texture_load(texturepath); category->item_icon = png_texture_load(content_texturepath); for (j = 0; j < category->num_items; j++) { menu_item_t *item = (menu_item_t*)&category->items[j]; for (k = 0; k < item->num_subitems; k++) { menu_subitem_t *subitem = (menu_subitem_t*)&item->subitems[k]; switch (k) { case 0: subitem->icon = textures[TEXTURE_RUN].id; break; case 1: subitem->icon = textures[TEXTURE_SAVESTATE].id; break; case 2: subitem->icon = textures[TEXTURE_LOADSTATE].id; break; case 3: subitem->icon = textures[TEXTURE_SCREENSHOT].id; break; case 4: subitem->icon = textures[TEXTURE_RELOAD].id; break; } } } } }