mirror of
https://github.com/libretro/RetroArch
synced 2025-03-29 22:20:21 +00:00
Cleanups
This commit is contained in:
parent
562ea77613
commit
7505251b40
@ -62,9 +62,6 @@ enum rarch_menu_ctl_state
|
||||
RARCH_MENU_CTL_SET_PREVENT_POPULATE,
|
||||
RARCH_MENU_CTL_UNSET_PREVENT_POPULATE,
|
||||
RARCH_MENU_CTL_IS_PREVENT_POPULATE,
|
||||
RARCH_MENU_CTL_IS_TOGGLE,
|
||||
RARCH_MENU_CTL_SET_TOGGLE,
|
||||
RARCH_MENU_CTL_UNSET_TOGGLE,
|
||||
RARCH_MENU_CTL_SET_OWN_DRIVER,
|
||||
RARCH_MENU_CTL_UNSET_OWN_DRIVER,
|
||||
RARCH_MENU_CTL_OWNS_DRIVER,
|
||||
|
@ -197,10 +197,6 @@ static bool menu_driver_pending_quick_menu = false;
|
||||
|
||||
static bool menu_driver_prevent_populate = false;
|
||||
|
||||
/* A menu toggle has been requested; if the menu was running,
|
||||
* it will be closed; if the menu was not running, it will be opened */
|
||||
static bool menu_driver_toggled = false;
|
||||
|
||||
/* The menu driver owns the userdata */
|
||||
static bool menu_driver_data_own = false;
|
||||
|
||||
@ -1838,110 +1834,6 @@ static bool menu_init(menu_handle_t *menu_data)
|
||||
return true;
|
||||
}
|
||||
|
||||
/* This callback gets triggered by the keyboard whenever
|
||||
* we press or release a keyboard key. When a keyboard
|
||||
* key is being pressed down, 'down' will be true. If it
|
||||
* is being released, 'down' will be false.
|
||||
*/
|
||||
static void menu_input_key_event(bool down, unsigned keycode,
|
||||
uint32_t character, uint16_t mod)
|
||||
{
|
||||
(void)down;
|
||||
(void)keycode;
|
||||
(void)mod;
|
||||
|
||||
#if 0
|
||||
RARCH_LOG("down: %d, keycode: %d, mod: %d, character: %d\n",
|
||||
down, keycode, mod, character);
|
||||
#endif
|
||||
|
||||
menu_event_kb_set(down, (enum retro_key)keycode);
|
||||
}
|
||||
|
||||
/* Gets called when we want to toggle the menu.
|
||||
* If the menu is already running, it will be turned off.
|
||||
* If the menu is off, then the menu will be started.
|
||||
*/
|
||||
static void menu_driver_toggle(bool on)
|
||||
{
|
||||
retro_keyboard_event_t *key_event = NULL;
|
||||
retro_keyboard_event_t *frontend_key_event = NULL;
|
||||
settings_t *settings = config_get_ptr();
|
||||
bool pause_libretro = settings ?
|
||||
settings->bools.menu_pause_libretro : false;
|
||||
bool enable_menu_sound = settings ?
|
||||
settings->bools.audio_enable_menu : false;
|
||||
|
||||
menu_driver_toggled = on;
|
||||
|
||||
if (!on)
|
||||
menu_display_toggle_set_reason(MENU_TOGGLE_REASON_NONE);
|
||||
|
||||
if (menu_driver_ctx && menu_driver_ctx->toggle)
|
||||
menu_driver_ctx->toggle(menu_userdata, on);
|
||||
|
||||
menu_driver_set_alive(on);
|
||||
|
||||
rarch_ctl(RARCH_CTL_FRONTEND_KEY_EVENT_GET, &frontend_key_event);
|
||||
rarch_ctl(RARCH_CTL_KEY_EVENT_GET, &key_event);
|
||||
|
||||
if (menu_driver_is_alive())
|
||||
{
|
||||
bool refresh = false;
|
||||
|
||||
#ifdef WIIU
|
||||
/* Enable burn-in protection menu is running */
|
||||
IMEnableDim();
|
||||
#endif
|
||||
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh);
|
||||
|
||||
/* Menu should always run with vsync on. */
|
||||
command_event(CMD_EVENT_VIDEO_SET_BLOCKING_STATE, NULL);
|
||||
/* Stop all rumbling before entering the menu. */
|
||||
command_event(CMD_EVENT_RUMBLE_STOP, NULL);
|
||||
|
||||
if (pause_libretro && !enable_menu_sound)
|
||||
command_event(CMD_EVENT_AUDIO_STOP, NULL);
|
||||
|
||||
/*if (settings->bools.audio_enable_menu && settings->bools.audio_enable_menu_bgm)
|
||||
audio_driver_mixer_play_menu_sound_looped(AUDIO_MIXER_SYSTEM_SLOT_BGM);*/
|
||||
|
||||
/* Override keyboard callback to redirect to menu instead.
|
||||
* We'll use this later for something ... */
|
||||
|
||||
if (key_event && frontend_key_event)
|
||||
{
|
||||
*frontend_key_event = *key_event;
|
||||
*key_event = menu_input_key_event;
|
||||
|
||||
rarch_ctl(RARCH_CTL_SET_FRAME_TIME_LAST, NULL);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef WIIU
|
||||
/* Disable burn-in protection while core is running; this is needed
|
||||
* because HID inputs don't count for the purpose of Wii U
|
||||
* power-saving. */
|
||||
IMDisableDim();
|
||||
#endif
|
||||
|
||||
if (!rarch_ctl(RARCH_CTL_IS_SHUTDOWN, NULL))
|
||||
driver_set_nonblock_state();
|
||||
|
||||
if (pause_libretro && !enable_menu_sound)
|
||||
command_event(CMD_EVENT_AUDIO_START, NULL);
|
||||
|
||||
/*if (settings->bools.audio_enable_menu && settings->bools.audio_enable_menu_bgm)
|
||||
audio_driver_mixer_stop_stream(AUDIO_MIXER_SYSTEM_SLOT_BGM);*/
|
||||
|
||||
/* Restore libretro keyboard callback. */
|
||||
if (key_event && frontend_key_event)
|
||||
*key_event = *frontend_key_event;
|
||||
}
|
||||
}
|
||||
|
||||
const char *menu_driver_ident(void)
|
||||
{
|
||||
if (!menu_driver_is_alive())
|
||||
@ -2288,14 +2180,6 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data)
|
||||
break;
|
||||
case RARCH_MENU_CTL_IS_PREVENT_POPULATE:
|
||||
return menu_driver_prevent_populate;
|
||||
case RARCH_MENU_CTL_IS_TOGGLE:
|
||||
return menu_driver_toggled;
|
||||
case RARCH_MENU_CTL_SET_TOGGLE:
|
||||
menu_driver_toggle(true);
|
||||
break;
|
||||
case RARCH_MENU_CTL_UNSET_TOGGLE:
|
||||
menu_driver_toggle(false);
|
||||
break;
|
||||
case RARCH_MENU_CTL_SET_OWN_DRIVER:
|
||||
menu_driver_data_own = true;
|
||||
break;
|
||||
|
@ -299,7 +299,7 @@ void menu_dialog_show_message(
|
||||
{
|
||||
menu_dialog_current_msg = msg;
|
||||
|
||||
if (!menu_driver_ctl(RARCH_MENU_CTL_IS_TOGGLE, NULL))
|
||||
if (!menu_driver_is_toggled())
|
||||
menu_display_toggle_set_reason(MENU_TOGGLE_REASON_MESSAGE);
|
||||
|
||||
menu_dialog_push_pending(true, type);
|
||||
|
139
retroarch.c
139
retroarch.c
@ -926,12 +926,20 @@ static menu_input_t menu_input_state;
|
||||
static bool menu_driver_alive = false;
|
||||
/* Are we binding a button inside the menu? */
|
||||
static bool menu_driver_is_binding = false;
|
||||
/* A menu toggle has been requested; if the menu was running,
|
||||
* it will be closed; if the menu was not running, it will be opened */
|
||||
static bool menu_driver_toggled = false;
|
||||
|
||||
void menu_driver_set_alive(bool val)
|
||||
{
|
||||
menu_driver_alive = val;
|
||||
}
|
||||
|
||||
bool menu_driver_is_toggled(void)
|
||||
{
|
||||
return menu_driver_toggled;
|
||||
}
|
||||
|
||||
/* Checks if the menu is still running */
|
||||
bool menu_driver_is_alive(void)
|
||||
{
|
||||
@ -947,6 +955,7 @@ void menu_driver_set_binding_state(bool on)
|
||||
{
|
||||
menu_driver_is_binding = on;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/* RECORDING GLOBAL VARIABLES */
|
||||
@ -21700,13 +21709,118 @@ static bool retroarch_is_on_main_thread(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
/* This callback gets triggered by the keyboard whenever
|
||||
* we press or release a keyboard key. When a keyboard
|
||||
* key is being pressed down, 'down' will be true. If it
|
||||
* is being released, 'down' will be false.
|
||||
*/
|
||||
static void menu_input_key_event(bool down, unsigned keycode,
|
||||
uint32_t character, uint16_t mod)
|
||||
{
|
||||
(void)down;
|
||||
(void)keycode;
|
||||
(void)mod;
|
||||
|
||||
#if 0
|
||||
RARCH_LOG("down: %d, keycode: %d, mod: %d, character: %d\n",
|
||||
down, keycode, mod, character);
|
||||
#endif
|
||||
|
||||
menu_event_kb_set(down, (enum retro_key)keycode);
|
||||
}
|
||||
|
||||
/* Gets called when we want to toggle the menu.
|
||||
* If the menu is already running, it will be turned off.
|
||||
* If the menu is off, then the menu will be started.
|
||||
*/
|
||||
void menu_driver_toggle(bool on)
|
||||
{
|
||||
retro_keyboard_event_t *key_event = &runloop_key_event;
|
||||
retro_keyboard_event_t *frontend_key_event = &runloop_frontend_key_event;
|
||||
settings_t *settings = configuration_settings;
|
||||
bool pause_libretro = settings ?
|
||||
settings->bools.menu_pause_libretro : false;
|
||||
bool enable_menu_sound = settings ?
|
||||
settings->bools.audio_enable_menu : false;
|
||||
menu_handle_t *menu_data = menu_driver_get_ptr();
|
||||
|
||||
if (!menu_data)
|
||||
return;
|
||||
|
||||
menu_driver_toggled = on;
|
||||
|
||||
if (!on)
|
||||
menu_display_toggle_set_reason(MENU_TOGGLE_REASON_NONE);
|
||||
|
||||
if (menu_data->driver_ctx && menu_data->driver_ctx->toggle)
|
||||
menu_data->driver_ctx->toggle(menu_data->userdata, on);
|
||||
|
||||
menu_driver_alive = on;
|
||||
|
||||
if (menu_driver_alive)
|
||||
{
|
||||
bool refresh = false;
|
||||
|
||||
#ifdef WIIU
|
||||
/* Enable burn-in protection menu is running */
|
||||
IMEnableDim();
|
||||
#endif
|
||||
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_SET_REFRESH, &refresh);
|
||||
|
||||
/* Menu should always run with vsync on. */
|
||||
command_event(CMD_EVENT_VIDEO_SET_BLOCKING_STATE, NULL);
|
||||
/* Stop all rumbling before entering the menu. */
|
||||
command_event(CMD_EVENT_RUMBLE_STOP, NULL);
|
||||
|
||||
if (pause_libretro && !enable_menu_sound)
|
||||
command_event(CMD_EVENT_AUDIO_STOP, NULL);
|
||||
|
||||
/*if (settings->bools.audio_enable_menu && settings->bools.audio_enable_menu_bgm)
|
||||
audio_driver_mixer_play_menu_sound_looped(AUDIO_MIXER_SYSTEM_SLOT_BGM);*/
|
||||
|
||||
/* Override keyboard callback to redirect to menu instead.
|
||||
* We'll use this later for something ... */
|
||||
|
||||
if (key_event && frontend_key_event)
|
||||
{
|
||||
*frontend_key_event = *key_event;
|
||||
*key_event = menu_input_key_event;
|
||||
|
||||
runloop_frame_time_last = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
#ifdef WIIU
|
||||
/* Disable burn-in protection while core is running; this is needed
|
||||
* because HID inputs don't count for the purpose of Wii U
|
||||
* power-saving. */
|
||||
IMDisableDim();
|
||||
#endif
|
||||
|
||||
if (!runloop_shutdown_initiated)
|
||||
driver_set_nonblock_state();
|
||||
|
||||
if (pause_libretro && !enable_menu_sound)
|
||||
command_event(CMD_EVENT_AUDIO_START, NULL);
|
||||
|
||||
/*if (settings->bools.audio_enable_menu && settings->bools.audio_enable_menu_bgm)
|
||||
audio_driver_mixer_stop_stream(AUDIO_MIXER_SYSTEM_SLOT_BGM);*/
|
||||
|
||||
/* Restore libretro keyboard callback. */
|
||||
if (key_event && frontend_key_event)
|
||||
*key_event = *frontend_key_event;
|
||||
}
|
||||
}
|
||||
|
||||
void retroarch_menu_running(void)
|
||||
{
|
||||
#if defined(HAVE_MENU) || defined(HAVE_OVERLAY)
|
||||
settings_t *settings = configuration_settings;
|
||||
settings_t *settings = configuration_settings;
|
||||
#endif
|
||||
#ifdef HAVE_MENU
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SET_TOGGLE, NULL);
|
||||
menu_driver_toggled = true;
|
||||
|
||||
/* Prevent stray input */
|
||||
input_driver_flushing_input = true;
|
||||
@ -21717,6 +21831,7 @@ void retroarch_menu_running(void)
|
||||
audio_driver_mixer_play_menu_sound_looped(AUDIO_MIXER_SYSTEM_SLOT_BGM);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_OVERLAY
|
||||
if (settings->bools.input_overlay_hide_in_menu)
|
||||
command_event(CMD_EVENT_OVERLAY_DEINIT, NULL);
|
||||
@ -21729,7 +21844,7 @@ void retroarch_menu_running_finished(bool quit)
|
||||
settings_t *settings = configuration_settings;
|
||||
#endif
|
||||
#ifdef HAVE_MENU
|
||||
menu_driver_ctl(RARCH_MENU_CTL_UNSET_TOGGLE, NULL);
|
||||
menu_driver_toggled = false;
|
||||
|
||||
/* Prevent stray input */
|
||||
input_driver_flushing_input = true;
|
||||
@ -22288,24 +22403,6 @@ bool rarch_ctl(enum rarch_ctl_state state, void *data)
|
||||
}
|
||||
break;
|
||||
|
||||
case RARCH_CTL_KEY_EVENT_GET:
|
||||
{
|
||||
retro_keyboard_event_t **key_event =
|
||||
(retro_keyboard_event_t**)data;
|
||||
if (!key_event)
|
||||
return false;
|
||||
*key_event = &runloop_key_event;
|
||||
}
|
||||
break;
|
||||
case RARCH_CTL_FRONTEND_KEY_EVENT_GET:
|
||||
{
|
||||
retro_keyboard_event_t **key_event =
|
||||
(retro_keyboard_event_t**)data;
|
||||
if (!key_event)
|
||||
return false;
|
||||
*key_event = &runloop_frontend_key_event;
|
||||
}
|
||||
break;
|
||||
case RARCH_CTL_NONE:
|
||||
default:
|
||||
return false;
|
||||
|
@ -146,8 +146,6 @@ enum rarch_ctl_state
|
||||
RARCH_CTL_IS_PERFCNT_ENABLE,
|
||||
|
||||
/* Key event */
|
||||
RARCH_CTL_FRONTEND_KEY_EVENT_GET,
|
||||
RARCH_CTL_KEY_EVENT_GET,
|
||||
RARCH_CTL_DATA_DEINIT,
|
||||
|
||||
/* Core options */
|
||||
@ -2107,6 +2105,12 @@ bool menu_driver_is_binding_state(void);
|
||||
|
||||
void menu_driver_set_binding_state(bool on);
|
||||
|
||||
bool menu_driver_is_toggled(void);
|
||||
|
||||
bool menu_driver_is_toggled(void);
|
||||
|
||||
void menu_driver_toggle(bool on);
|
||||
|
||||
|
||||
RETRO_END_DECLS
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user