/** * menu_init: * @data : Menu context handle. * * Create and initialize menu handle. * * Returns: menu handle on success, otherwise NULL. **/ void *menu_init(const void *data) { menu_handle_t *menu = NULL; menu_ctx_driver_t *menu_ctx = (menu_ctx_driver_t*)data; global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); if (!menu_ctx) return NULL; if (!(menu = (menu_handle_t*)menu_ctx->init())) return NULL; strlcpy(settings->menu.driver, menu_ctx->ident, sizeof(settings->menu.driver)); if (!menu_entries_init(menu)) goto error; global->core_info.current = (core_info_t*)calloc(1, sizeof(core_info_t)); if (!global->core_info.current) goto error; #ifdef HAVE_SHADER_MANAGER menu->shader = (struct video_shader*)calloc(1, sizeof(struct video_shader)); if (!menu->shader) goto error; #endif menu->push_help_screen = settings->menu_show_start_screen; menu->help_screen_type = MENU_HELP_WELCOME; settings->menu_show_start_screen = false; if (settings->bundle_assets_extract_enable && settings->bundle_assets_src_path[0] != '\0' && settings->bundle_assets_dst_path[0] != '\0' && settings->bundle_assets_extract_version_current != settings->bundle_assets_extract_last_version ) { rarch_task_push_decompress(settings->bundle_assets_src_path, settings->bundle_assets_dst_path, settings->bundle_assets_dst_path_subdir, NULL, bundle_decompressed, NULL); } menu_shader_manager_init(menu); if (!menu_display_init()) goto error; return menu; error: menu_free(menu); return NULL; }
/** * menu_init: * @data : Menu context handle. * * Create and initialize menu handle. * * Returns: menu handle on success, otherwise NULL. **/ static bool menu_init(menu_handle_t *menu_data) { settings_t *settings = config_get_ptr(); if (!menu_entries_ctl(MENU_ENTRIES_CTL_INIT, NULL)) return false; if (!core_info_init_current_core()) return false; if (!menu_driver_ctl(RARCH_MENU_CTL_SHADER_INIT, NULL)) return false; if (settings->menu_show_start_screen) { menu_data->push_help_screen = true; menu_data->help_screen_type = MENU_HELP_WELCOME; settings->menu_show_start_screen = false; command_event(CMD_EVENT_MENU_SAVE_CURRENT_CONFIG, NULL); } if ( settings->bundle_assets_extract_enable && !string_is_empty(settings->path.bundle_assets_src) && !string_is_empty(settings->path.bundle_assets_dst) #ifdef IOS && menu_data->push_help_screen #else && (settings->bundle_assets_extract_version_current != settings->bundle_assets_extract_last_version) #endif ) { menu_data->help_screen_type = MENU_HELP_EXTRACT; menu_data->push_help_screen = true; #ifdef HAVE_ZLIB rarch_task_push_decompress(settings->path.bundle_assets_src, settings->path.bundle_assets_dst, NULL, settings->path.bundle_assets_dst_subdir, NULL, bundle_decompressed, NULL); #endif } menu_driver_ctl(RARCH_MENU_CTL_SHADER_MANAGER_INIT, NULL); if (!menu_display_init()) return false; return true; }