void menu_list_pop_stack(menu_list_t *list) { menu_handle_t *menu = menu_driver_get_ptr(); if (!menu || !list) return; if (file_list_get_size(list->menu_stack) <= 1) return; menu_driver_list_cache(false, 0); menu_list_pop(list->menu_stack, &menu->navigation.selection_ptr); menu_set_refresh(); }
static int action_start_cheat_num_passes(unsigned type, const char *label) { global_t *global = global_get_ptr(); cheat_manager_t *cheat = global->cheat; if (!cheat) return -1; if (cheat->size) { cheat_manager_realloc(cheat, 0); menu_set_refresh(); } return 0; }
void menu_list_flush_stack(menu_list_t *list, const char *needle, unsigned final_type) { const char *path = NULL; const char *label = NULL; unsigned type = 0; menu_handle_t *menu = menu_driver_get_ptr(); if (!menu || !list) return; menu_set_refresh(); file_list_get_last(list->menu_stack, &path, &label, &type); while (menu_list_flush_stack_type(needle, label, type, final_type) != 0) { menu_list_pop(list->menu_stack, &menu->navigation.selection_ptr); file_list_get_last(list->menu_stack, &path, &label, &type); } }
static int action_start_shader_num_passes(unsigned type, const char *label) { #ifdef HAVE_SHADER_MANAGER struct video_shader *shader = NULL; menu_handle_t *menu = menu_driver_get_ptr(); if (!menu) return -1; shader = menu->shader; if (!shader) return -1; if (shader->passes) shader->passes = 0; menu_set_refresh(); video_shader_resolve_parameters(NULL, menu->shader); #endif return 0; }
void rarch_main_set_state(unsigned cmd) { driver_t *driver = driver_get_ptr(); global_t *global = global_get_ptr(); settings_t *settings = config_get_ptr(); switch (cmd) { case RARCH_ACTION_STATE_MENU_RUNNING: #ifdef HAVE_MENU { menu_handle_t *menu = menu_driver_get_ptr(); if (!menu) return; menu_driver_toggle(true); /* Menu should always run with vsync on. */ event_command(EVENT_CMD_VIDEO_SET_BLOCKING_STATE); /* Stop all rumbling before entering the menu. */ event_command(EVENT_CMD_RUMBLE_STOP); if (settings->menu.pause_libretro) event_command(EVENT_CMD_AUDIO_STOP); /* Override keyboard callback to redirect to menu instead. * We'll use this later for something ... * FIXME: This should probably be moved to menu_common somehow. */ if (global) { global->frontend_key_event = global->system.key_event; global->system.key_event = menu_input_key_event; global->system.frame_time_last = 0; } menu_set_refresh(); menu_driver_set_alive(); } #endif break; case RARCH_ACTION_STATE_LOAD_CONTENT: #ifdef HAVE_MENU /* If content loading fails, we go back to menu. */ if (!menu_load_content()) rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING); #endif if (driver->frontend_ctx && driver->frontend_ctx->content_loaded) driver->frontend_ctx->content_loaded(); break; case RARCH_ACTION_STATE_MENU_RUNNING_FINISHED: #ifdef HAVE_MENU menu_setting_apply_deferred(); menu_driver_toggle(false); menu_driver_unset_alive(); driver_set_nonblock_state(driver->nonblock_state); if (settings && settings->menu.pause_libretro) event_command(EVENT_CMD_AUDIO_START); /* Prevent stray input from going to libretro core */ driver->flushing_input = true; /* Restore libretro keyboard callback. */ if (global) global->system.key_event = global->frontend_key_event; #endif video_driver_set_texture_enable(false, false); break; case RARCH_ACTION_STATE_QUIT: if (global) global->system.shutdown = true; rarch_main_set_state(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED); break; case RARCH_ACTION_STATE_FORCE_QUIT: if (global) global->lifecycle_state = 0; rarch_main_set_state(RARCH_ACTION_STATE_QUIT); break; case RARCH_ACTION_STATE_NONE: default: break; } }