static void zarch_context_reset(void) { zui_t *zui = NULL; menu_handle_t *menu = menu_driver_get_ptr(); settings_t *settings = config_get_ptr(); const char *font_path = NULL; if (!menu || !menu->userdata || !settings) return; zui = (zui_t*)menu->userdata; font_path = settings->video.font_enable ? settings->video.font_path : NULL; if (!menu_display_init_main_font(menu, font_path, zui->font_size)) RARCH_WARN("Failed to load font."); zarch_context_bg_destroy(zui); rarch_main_data_msg_queue_push(DATA_TYPE_IMAGE, settings->menu.wallpaper, "cb_menu_wallpaper", 0, 1, true); zarch_allocate_white_texture(zui); menu_display_ctl(MENU_DISPLAY_CTL_SET_FONT_SIZE, &zui->font_size); zarch_zui_font(menu); }
static int action_ok_menu_wallpaper_load(const char *path, const char *label, unsigned type, size_t idx) { char wallpaper_path[PATH_MAX_LENGTH]; const char *menu_label = NULL; const char *menu_path = NULL; rarch_setting_t *setting = NULL; menu_handle_t *menu = menu_driver_get_ptr(); settings_t *settings = config_get_ptr(); if (!menu) return -1; menu_list_get_last_stack(menu->menu_list, &menu_path, &menu_label, NULL); setting = menu_setting_find(menu_label); if (!setting) return -1; fill_pathname_join(wallpaper_path, menu_path, path, sizeof(wallpaper_path)); if (path_file_exists(wallpaper_path)) { strlcpy(settings->menu.wallpaper, wallpaper_path, sizeof(settings->menu.wallpaper)); rarch_main_data_msg_queue_push(DATA_TYPE_IMAGE, wallpaper_path, "cb_menu_wallpaper", 0, 1, true); } menu_list_pop_stack_by_needle(menu->menu_list, setting->name); return 0; }
static int action_ok_core_updater_list(const char *path, const char *label, unsigned type, size_t idx) { char url_path[PATH_MAX_LENGTH]; menu_handle_t *menu = menu_driver_get_ptr(); driver_t *driver = driver_get_ptr(); settings_t *settings = config_get_ptr(); if (!menu) return -1; driver->menu->nonblocking_refresh = true; (void)url_path; if (settings->network.buildbot_url[0] == '\0') return -1; #ifdef HAVE_NETWORKING event_command(EVENT_CMD_NETWORK_INIT); fill_pathname_join(url_path, settings->network.buildbot_url, ".index", sizeof(url_path)); rarch_main_data_msg_queue_push(DATA_TYPE_HTTP, url_path, "cb_core_updater_list", 0, 1, true); #endif return menu_list_push_stack_refresh( menu->menu_list, path, "deferred_core_updater_list", type, idx); }
static void *zarch_init(void) { int unused; zui_t *zui = NULL; settings_t *settings = config_get_ptr(); menu_handle_t *menu = (menu_handle_t*)calloc(1, sizeof(*menu)); if (!menu) goto error; if (!menu_display_driver_init_first()) goto error; menu->userdata = (zui_t*)calloc(1, sizeof(zui_t)); if (!menu->userdata) goto error; zui = (zui_t*)menu->userdata; if (settings->menu.mouse.enable) { RARCH_WARN("Forcing menu_mouse_enable=false\n"); settings->menu.mouse.enable = false; } unused = 1000; menu_display_ctl(MENU_DISPLAY_CTL_SET_HEADER_HEIGHT, &unused); unused = 28; menu_display_ctl(MENU_DISPLAY_CTL_SET_FONT_SIZE, &unused); (void)unused; zui->header_height = 1000; /* dpi / 3; */ zui->font_size = 28; if (settings->menu.wallpaper[0] != '\0') rarch_main_data_msg_queue_push(DATA_TYPE_IMAGE, settings->menu.wallpaper, "cb_menu_wallpaper", 0, 1, true); zui->ca.allocated = 0; matrix_4x4_ortho(&zui->mvp, 0, 1, 1, 0, 0, 1); zarch_zui_font(menu); return menu; error: if (menu) free(menu); return NULL; }
static void *glui_init(void) { float dpi; glui_handle_t *glui = NULL; const video_driver_t *video_driver = NULL; menu_handle_t *menu = NULL; settings_t *settings = config_get_ptr(); gl_t *gl = (gl_t*) video_driver_get_ptr(&video_driver); if (video_driver != &video_gl || !gl) { RARCH_ERR("Cannot initialize GLUI menu driver: gl video driver is not active.\n"); return NULL; } menu = (menu_handle_t*)calloc(1, sizeof(*menu)); if (!menu) goto error; menu->userdata = (glui_handle_t*)calloc(1, sizeof(glui_handle_t)); if (!menu->userdata) goto error; glui = (glui_handle_t*)menu->userdata; dpi = menu_display_get_dpi(); glui->line_height = dpi / 3; glui->margin = dpi / 6; glui->ticker_limit = dpi / 3; menu->display.header_height = dpi / 3; menu->display.font.size = dpi / 8; glui->textures.bg.id = 0; glui_allocate_white_texture(glui); if (settings->menu.wallpaper[0] != '\0') rarch_main_data_msg_queue_push(DATA_TYPE_IMAGE, settings->menu.wallpaper, "cb_menu_wallpaper", 0, 1, true); return menu; error: if (menu) free(menu); return NULL; }
static void glui_context_reset(void) { glui_handle_t *glui = NULL; menu_handle_t *menu = menu_driver_get_ptr(); settings_t *settings = config_get_ptr(); if (!menu || !menu->userdata || !settings) return; glui = (glui_handle_t*)menu->userdata; glui_layout(menu, glui); glui_context_bg_destroy(glui); glui_allocate_white_texture(glui); rarch_main_data_msg_queue_push(DATA_TYPE_IMAGE, settings->menu.wallpaper, "cb_menu_wallpaper", 0, 1, true); }
static int action_scan_directory(const char *path, const char *label, unsigned type, size_t idx) { char fullpath[PATH_MAX_LENGTH]; const char *menu_label = NULL; const char *menu_path = NULL; menu_handle_t *menu = menu_driver_get_ptr(); if (!menu) return -1; menu_list_get_last_stack(menu->menu_list, &menu_path, &menu_label, NULL); fill_pathname_join(fullpath, menu_path, path, sizeof(fullpath)); rarch_main_data_msg_queue_push(DATA_TYPE_DB, fullpath, "cb_db_scan", 0, 1, true); return 0; }
static int action_ok_core_updater_download(const char *path, const char *label, unsigned type, size_t idx) { #ifdef HAVE_NETWORKING char core_path[PATH_MAX_LENGTH], msg[PATH_MAX_LENGTH]; settings_t *settings = config_get_ptr(); fill_pathname_join(core_path, settings->network.buildbot_url, path, sizeof(core_path)); strlcpy(core_updater_path, path, sizeof(core_updater_path)); snprintf(msg, sizeof(msg), "Starting download: %s.", path); rarch_main_msg_queue_push(msg, 1, 90, true); rarch_main_data_msg_queue_push(DATA_TYPE_HTTP, core_path, "cb_core_updater_download", 0, 1, true); #endif return 0; }
static void *glui_init(void) { glui_handle_t *glui = NULL; const video_driver_t *video_driver = NULL; menu_handle_t *menu = NULL; settings_t *settings = config_get_ptr(); gl_t *gl = (gl_t*) video_driver_get_ptr(&video_driver); if (video_driver != &video_gl || !gl) { RARCH_ERR("Cannot initialize GLUI menu driver: gl video driver is not active.\n"); return NULL; } menu = (menu_handle_t*)calloc(1, sizeof(*menu)); if (!menu) goto error; menu->userdata = (glui_handle_t*)calloc(1, sizeof(glui_handle_t)); if (!menu->userdata) goto error; glui = (glui_handle_t*)menu->userdata; glui_layout(menu, glui); glui_allocate_white_texture(glui); if (settings->menu.wallpaper[0] != '\0') rarch_main_data_msg_queue_push(DATA_TYPE_IMAGE, settings->menu.wallpaper, "cb_menu_wallpaper", 0, 1, true); return menu; error: if (menu) free(menu); return NULL; }
static void glui_context_reset(void) { glui_handle_t *glui = NULL; menu_handle_t *menu = menu_driver_get_ptr(); settings_t *settings = config_get_ptr(); const char *font_path = NULL; if (!menu || !menu->userdata || !settings) return; glui = (glui_handle_t*)menu->userdata; font_path = settings->video.font_enable ? settings->video.font_path : NULL; if (!menu_display_init_main_font(menu, font_path, menu->display.font.size)) RARCH_WARN("Failed to load font."); glui_context_bg_destroy(glui); glui_allocate_white_texture(glui); rarch_main_data_msg_queue_push(DATA_TYPE_IMAGE, settings->menu.wallpaper, "cb_menu_wallpaper", 0, 1, true); }
static int action_ok_core_updater_list(const char *path, const char *label, unsigned type, size_t idx) { char url_path[PATH_MAX_LENGTH]; menu_displaylist_info_t info = {0}; driver_t *driver = driver_get_ptr(); menu_handle_t *menu = menu_driver_get_ptr(); settings_t *settings = config_get_ptr(); if (!menu) return -1; driver->menu->nonblocking_refresh = true; (void)url_path; if (settings->network.buildbot_url[0] == '\0') return -1; #ifdef HAVE_NETWORKING event_command(EVENT_CMD_NETWORK_INIT); fill_pathname_join(url_path, settings->network.buildbot_url, ".index", sizeof(url_path)); rarch_main_data_msg_queue_push(DATA_TYPE_HTTP, url_path, "cb_core_updater_list", 0, 1, true); #endif info.list = menu->menu_list->menu_stack; info.type = type; info.directory_ptr = idx; strlcpy(info.path, path, sizeof(info.path)); strlcpy(info.label, "deferred_core_updater_list", sizeof(info.label)); return menu_displaylist_push_list(&info, DISPLAYLIST_GENERIC); }
/** * 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_display_t *disp = 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 0 if (settings->bundle_assets_extract_enable && (strcmp(PACKAGE_VERSION, settings->bundle_assets_last_extracted_version) != 0) ) { menu->push_help_screen = true; menu->help_screen_type = MENU_HELP_EXTRACT; rarch_main_data_msg_queue_push(DATA_TYPE_FILE, "cb_bundle_extract", "cb_bundle_extract", 0, 1, true); } #endif menu_shader_manager_init(menu); if (!menu_display_init(menu)) goto error; disp = &menu->display; rarch_assert(disp->msg_queue = msg_queue_new(8)); return menu; error: menu_free(menu); return NULL; }