Refactor hotkey checks

This commit is contained in:
twinaphex 2019-06-08 15:19:15 +02:00
parent 548e1380d7
commit 5d301f321d
3 changed files with 178 additions and 222 deletions

View File

@ -1749,6 +1749,45 @@ bool command_event(enum event_command cmd, void *data)
switch (cmd) switch (cmd)
{ {
case CMD_EVENT_BSV_RECORDING_TOGGLE:
if (!recording_is_enabled())
command_event(CMD_EVENT_RECORD_INIT, NULL);
else
command_event(CMD_EVENT_RECORD_DEINIT, NULL);
bsv_movie_check();
break;
case CMD_EVENT_AI_SERVICE_TOGGLE:
/* TODO/FIXME - implement */
break;
case CMD_EVENT_NETPLAY_GAME_WATCH:
#ifdef HAVE_NETWORKING
netplay_driver_ctl(RARCH_NETPLAY_CTL_GAME_WATCH, NULL);
#endif
break;
case CMD_EVENT_STREAMING_TOGGLE:
if (streaming_is_enabled())
command_event(CMD_EVENT_RECORD_DEINIT, NULL);
else
{
streaming_set_state(true);
command_event(CMD_EVENT_RECORD_INIT, NULL);
}
break;
case CMD_EVENT_RECORDING_TOGGLE:
if (recording_is_enabled())
command_event(CMD_EVENT_RECORD_DEINIT, NULL);
else
command_event(CMD_EVENT_RECORD_INIT, NULL);
break;
case CMD_EVENT_OSK_TOGGLE:
if (input_keyboard_ctl(
RARCH_INPUT_KEYBOARD_CTL_IS_LINEFEED_ENABLED, NULL))
input_keyboard_ctl(
RARCH_INPUT_KEYBOARD_CTL_UNSET_LINEFEED_ENABLED, NULL);
else
input_keyboard_ctl(
RARCH_INPUT_KEYBOARD_CTL_SET_LINEFEED_ENABLED, NULL);
break;
case CMD_EVENT_SET_PER_GAME_RESOLUTION: case CMD_EVENT_SET_PER_GAME_RESOLUTION:
#if defined(GEKKO) #if defined(GEKKO)
{ {
@ -2051,7 +2090,7 @@ TODO: Add a setting for these tweaks */
{ {
#ifdef HAVE_NETWORKING #ifdef HAVE_NETWORKING
/* Only enable state manager if netplay is not underway /* Only enable state manager if netplay is not underway
TODO: Add a setting for these tweaks */ TODO: Add a setting for these tweaks */
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
if (settings->uints.autosave_interval != 0 if (settings->uints.autosave_interval != 0
&& !netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_ENABLED, NULL)) && !netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_ENABLED, NULL))
@ -2612,7 +2651,7 @@ TODO: Add a setting for these tweaks */
} }
/* Disable rewind & sram autosave if it was enabled /* Disable rewind & sram autosave if it was enabled
TODO: Add a setting for these tweaks */ TODO: Add a setting for these tweaks */
state_manager_event_deinit(); state_manager_event_deinit();
#ifdef HAVE_THREADS #ifdef HAVE_THREADS
autosave_deinit(); autosave_deinit();
@ -2649,7 +2688,7 @@ TODO: Add a setting for these tweaks */
string_list_free(hostname); string_list_free(hostname);
/* Disable rewind if it was enabled /* Disable rewind if it was enabled
TODO: Add a setting for these tweaks */ TODO: Add a setting for these tweaks */
state_manager_event_deinit(); state_manager_event_deinit();
#ifdef HAVE_THREADS #ifdef HAVE_THREADS
autosave_deinit(); autosave_deinit();
@ -2686,16 +2725,13 @@ TODO: Add a setting for these tweaks */
string_list_free(hostname); string_list_free(hostname);
/* Disable rewind if it was enabled /* Disable rewind if it was enabled
TODO: Add a setting for these tweaks */ TODO: Add a setting for these tweaks */
state_manager_event_deinit(); state_manager_event_deinit();
#ifdef HAVE_THREADS #ifdef HAVE_THREADS
autosave_deinit(); autosave_deinit();
#endif #endif
} }
break; break;
case CMD_EVENT_NETPLAY_GAME_WATCH:
netplay_driver_ctl(RARCH_NETPLAY_CTL_GAME_WATCH, NULL);
break;
case CMD_EVENT_NETPLAY_ENABLE_HOST: case CMD_EVENT_NETPLAY_ENABLE_HOST:
{ {
#ifdef HAVE_MENU #ifdef HAVE_MENU
@ -2732,7 +2768,7 @@ TODO: Add a setting for these tweaks */
netplay_driver_ctl(RARCH_NETPLAY_CTL_DISABLE, NULL); netplay_driver_ctl(RARCH_NETPLAY_CTL_DISABLE, NULL);
/* Re-enable rewind if it was enabled /* Re-enable rewind if it was enabled
TODO: Add a setting for these tweaks */ TODO: Add a setting for these tweaks */
if (settings->bools.rewind_enable) if (settings->bools.rewind_enable)
command_event(CMD_EVENT_REWIND_INIT, NULL); command_event(CMD_EVENT_REWIND_INIT, NULL);
if (settings->uints.autosave_interval != 0) if (settings->uints.autosave_interval != 0)

View File

@ -245,7 +245,12 @@ enum event_command
CMD_EVENT_RESTORE_DEFAULT_SHADER_PRESET, CMD_EVENT_RESTORE_DEFAULT_SHADER_PRESET,
CMD_EVENT_DISCORD_INIT, CMD_EVENT_DISCORD_INIT,
CMD_EVENT_DISCORD_DEINIT, CMD_EVENT_DISCORD_DEINIT,
CMD_EVENT_DISCORD_UPDATE CMD_EVENT_DISCORD_UPDATE,
CMD_EVENT_OSK_TOGGLE,
CMD_EVENT_RECORDING_TOGGLE,
CMD_EVENT_STREAMING_TOGGLE,
CMD_EVENT_AI_SERVICE_TOGGLE,
CMD_EVENT_BSV_RECORDING_TOGGLE
}; };
bool command_set_shader(const char *arg); bool command_set_shader(const char *arg);

View File

@ -3873,77 +3873,16 @@ static enum runloop_state runloop_check_state(
HOTKEY_CHECK(RARCH_MUTE, CMD_EVENT_AUDIO_MUTE_TOGGLE); HOTKEY_CHECK(RARCH_MUTE, CMD_EVENT_AUDIO_MUTE_TOGGLE);
/* Check if we have pressed the OSK toggle button */ /* Check if we have pressed the OSK toggle button */
{ HOTKEY_CHECK(RARCH_OSK, CMD_EVENT_OSK_TOGGLE);
static bool old_pressed = false;
bool pressed = BIT256_GET(current_input, RARCH_OSK);
if (pressed && !old_pressed)
{
if (input_keyboard_ctl(
RARCH_INPUT_KEYBOARD_CTL_IS_LINEFEED_ENABLED, NULL))
input_keyboard_ctl(
RARCH_INPUT_KEYBOARD_CTL_UNSET_LINEFEED_ENABLED, NULL);
else
input_keyboard_ctl(
RARCH_INPUT_KEYBOARD_CTL_SET_LINEFEED_ENABLED, NULL);
}
old_pressed = pressed;
}
/* Check if we have pressed the recording toggle button */ /* Check if we have pressed the recording toggle button */
{ HOTKEY_CHECK(RARCH_RECORDING_TOGGLE, CMD_EVENT_RECORDING_TOGGLE);
static bool old_pressed = false;
bool pressed = BIT256_GET(
current_input, RARCH_RECORDING_TOGGLE);
if (pressed && !old_pressed)
{
if (recording_is_enabled())
command_event(CMD_EVENT_RECORD_DEINIT, NULL);
else
command_event(CMD_EVENT_RECORD_INIT, NULL);
}
old_pressed = pressed;
}
/* Check if we have pressed the AI Service toggle button */ /* Check if we have pressed the AI Service toggle button */
{ HOTKEY_CHECK(RARCH_AI_SERVICE, CMD_EVENT_AI_SERVICE_TOGGLE);
static bool old_pressed = false;
bool pressed = BIT256_GET(
current_input, RARCH_AI_SERVICE);
if (pressed && !old_pressed)
{
#if 0
/* TODO/FIXME */
command_event(CMD_EVENT_RECORD_INIT, NULL);
#endif
}
old_pressed = pressed;
}
/* Check if we have pressed the streaming toggle button */ /* Check if we have pressed the streaming toggle button */
{ HOTKEY_CHECK(RARCH_STREAMING_TOGGLE, CMD_EVENT_STREAMING_TOGGLE);
static bool old_pressed = false;
bool pressed = BIT256_GET(
current_input, RARCH_STREAMING_TOGGLE);
if (pressed && !old_pressed)
{
if (streaming_is_enabled())
command_event(CMD_EVENT_RECORD_DEINIT, NULL);
else
{
streaming_set_state(true);
command_event(CMD_EVENT_RECORD_INIT, NULL);
}
}
old_pressed = pressed;
}
if (BIT256_GET(current_input, RARCH_VOLUME_UP)) if (BIT256_GET(current_input, RARCH_VOLUME_UP))
command_event(CMD_EVENT_VOLUME_UP, NULL); command_event(CMD_EVENT_VOLUME_UP, NULL);
@ -3952,16 +3891,7 @@ static enum runloop_state runloop_check_state(
#ifdef HAVE_NETWORKING #ifdef HAVE_NETWORKING
/* Check Netplay */ /* Check Netplay */
{ HOTKEY_CHECK(RARCH_NETPLAY_GAME_WATCH, CMD_EVENT_NETPLAY_GAME_WATCH);
static bool old_netplay_watch = false;
bool netplay_watch = BIT256_GET(
current_input, RARCH_NETPLAY_GAME_WATCH);
if (netplay_watch && !old_netplay_watch)
netplay_driver_ctl(RARCH_NETPLAY_CTL_GAME_WATCH, NULL);
old_netplay_watch = netplay_watch;
}
#endif #endif
/* Check if we have pressed the pause button */ /* Check if we have pressed the pause button */
@ -4209,22 +4139,7 @@ static enum runloop_state runloop_check_state(
} }
/* Check movie record toggle */ /* Check movie record toggle */
{ HOTKEY_CHECK(RARCH_BSV_RECORD_TOGGLE, CMD_EVENT_BSV_RECORDING_TOGGLE);
static bool old_pressed = false;
bool pressed = BIT256_GET(
current_input, RARCH_BSV_RECORD_TOGGLE);
if (pressed && !old_pressed)
{
if (!recording_is_enabled())
command_event(CMD_EVENT_RECORD_INIT, NULL);
else
command_event(CMD_EVENT_RECORD_DEINIT, NULL);
bsv_movie_check();
}
old_pressed = pressed;
}
/* Check shader prev/next */ /* Check shader prev/next */
{ {