static void *lakka_init(void) { int i, j; rgui_handle_t *rgui = (rgui_handle_t*)calloc(1, sizeof(*rgui)); gl_t *gl = (gl_t*)driver.video_data; if (!rgui || !gl) return NULL; init_font(gl, g_settings.video.font_path, g_settings.video.font_size, gl->win_width, gl->win_height); lakka_init_core_info(rgui); categories = (menu_category_t*)calloc(num_categories, sizeof(menu_category_t)); lakka_init_settings(); for (i = 1; i < num_categories; i++) { core_info_t *info; core_info_list_t *info_list; menu_category_t *category = (menu_category_t*)&categories[i]; info_list = (core_info_list_t*)rgui->core_info; info = NULL; if (info_list) info = (core_info_t*)&info_list->list[i-1]; strlcpy(category->name, info->display_name, sizeof(category->name)); strlcpy(category->libretro, info->path, sizeof(category->libretro)); category->alpha = 0.5; category->zoom = C_PASSIVE_ZOOM; category->active_item = 0; category->num_items = 0; category->items = (menu_item_t*)calloc(category->num_items, sizeof(menu_item_t)); lakka_init_items(i, category, info, g_settings.content_directory); } return rgui; }
static void *lakka_init(void) { int i, j; menu_handle_t *menu = (menu_handle_t*)calloc(1, sizeof(*menu)); gl_t *gl = (gl_t*)driver.video_data; if (!menu || !gl) return NULL; lakka_responsive(); lakka_init_core_info(menu); categories = (menu_category_t*)calloc(num_categories, sizeof(menu_category_t)); lakka_init_settings(); for (i = 1; i < num_categories; i++) { core_info_t *info; core_info_list_t *info_list; menu_category_t *category = (menu_category_t*)&categories[i]; info_list = (core_info_list_t*)menu->core_info; info = NULL; if (info_list) info = (core_info_t*)&info_list->list[i-1]; strlcpy(category->name, info->display_name, sizeof(category->name)); strlcpy(category->libretro, info->path, sizeof(category->libretro)); category->alpha = 0.5; category->zoom = c_passive_zoom; category->active_item = 0; category->num_items = 0; category->items = (menu_item_t*)calloc(category->num_items, sizeof(menu_item_t)); lakka_init_items(i, category, info, g_settings.content_directory); } return menu; }
static void *lakka_init(void) { 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); if (video_driver != &video_gl || !gl) { RARCH_ERR("Cannot initialize Lakka menu driver: gl video driver is not active.\n"); return NULL; } menu = (menu_handle_t*)calloc(1, sizeof(*menu)); if (!menu) return NULL; lakka_init_core_info(menu); 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->num_categories = g_extern.core_info ? (g_extern.core_info->count + 1) : 1; lakka->categories = (menu_category_t*) calloc(lakka->num_categories, sizeof(menu_category_t)); if (!lakka->categories) { free(menu); return NULL; } lakka->c_active_zoom = 1.0; lakka->c_passive_zoom = 0.5; lakka->i_active_zoom = 1.0; lakka->i_passive_zoom = 0.5; lakka->c_active_alpha = 1.0; lakka->c_passive_alpha = 0.5; lakka->i_active_alpha = 1.0; lakka->i_passive_alpha = 0.5; lakka->above_subitem_offset = 1.5; lakka->above_item_offset = -1.0; lakka->active_item_factor = 2.75; lakka->under_item_offset = 4.0; if (gl->win_width >= 3840) { lakka->icon_size = 256; lakka->hspacing = 400; lakka->vspacing = 128; lakka->margin_left = 672.0; lakka->margin_top = 512; lakka->title_margin_left = 20.0; lakka->title_margin_top = 50.0; lakka->label_margin_left = 192; lakka->label_margin_top = 15; lakka->setting_margin_left = 1200; strcpy(lakka->icon_dir, "256"); } else if (gl->win_width >= 2560) { lakka->icon_size = 192; lakka->hspacing = 300; lakka->vspacing = 96; lakka->margin_left = 448.0; lakka->margin_top = 384; lakka->title_margin_left = 15.0; lakka->title_margin_top = 40.0; lakka->label_margin_left = 144; lakka->label_margin_top = 11.0; lakka->setting_margin_left = 800; strcpy(lakka->icon_dir, "192"); } else if (gl->win_width >= 1920) { lakka->icon_size = 128; lakka->hspacing = 200.0; lakka->vspacing = 64.0; lakka->margin_left = 336.0; lakka->margin_top = 256; lakka->title_margin_left = 15.0; lakka->title_margin_top = 35.0; lakka->label_margin_left = 85; lakka->label_margin_top = 8.0; lakka->setting_margin_left = 600; strcpy(lakka->icon_dir, "128"); } else if (gl->win_width <= 640) { lakka->icon_size = 64; lakka->hspacing = 100.0; lakka->vspacing = 32.0; lakka->margin_left = 60.0; lakka->margin_top = 128.0; lakka->title_margin_left = 10.0; lakka->title_margin_top = 24.0; lakka->label_margin_left = 48; lakka->label_margin_top = 6.0; lakka->setting_margin_left = 250; strcpy(lakka->icon_dir, "64"); } else { lakka->icon_size = 96; lakka->hspacing = 150.0; lakka->vspacing = 48.0; lakka->margin_left = 224; lakka->margin_top = 192; lakka->title_margin_left = 15.0; lakka->title_margin_top = 30.0; lakka->label_margin_left = 64; lakka->label_margin_top = 6.0; lakka->setting_margin_left = 400; strcpy(lakka->icon_dir, "96"); } lakka->depth = 0; lakka->menu_active_category = 0; lakka->all_categories_x = 0; lakka->global_alpha = 0.0f; lakka->global_scale = 2.0f; lakka->arrow_alpha = 0; lakka->fbo_depth = 0; return menu; }