mirror of
https://github.com/libretro/RetroArch
synced 2025-02-22 12:40:09 +00:00
(runloop.c) Create static functions
This commit is contained in:
parent
c015711090
commit
00dce981c8
@ -329,9 +329,7 @@ bool core_ctl(enum core_ctl_state state, void *data)
|
|||||||
if (core.retro_run)
|
if (core.retro_run)
|
||||||
core.retro_run();
|
core.retro_run();
|
||||||
if (core_poll_type == POLL_TYPE_LATE && !core_input_polled)
|
if (core_poll_type == POLL_TYPE_LATE && !core_input_polled)
|
||||||
{
|
|
||||||
input_poll();
|
input_poll();
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case CORE_CTL_SET_CBS:
|
case CORE_CTL_SET_CBS:
|
||||||
return retro_set_default_callbacks(data);
|
return retro_set_default_callbacks(data);
|
||||||
|
223
runloop.c
223
runloop.c
@ -407,6 +407,119 @@ static bool rarch_game_specific_options(char **output)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool runloop_check_state(event_cmd_state_t *cmd, rarch_dir_list_t *shader_dir)
|
||||||
|
{
|
||||||
|
bool tmp = false;
|
||||||
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
|
if (!cmd || runloop_ctl(RUNLOOP_CTL_IS_IDLE, NULL))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (runloop_cmd_triggered(cmd, RARCH_SCREENSHOT))
|
||||||
|
event_cmd_ctl(EVENT_CMD_TAKE_SCREENSHOT, NULL);
|
||||||
|
|
||||||
|
if (runloop_cmd_triggered(cmd, RARCH_MUTE))
|
||||||
|
event_cmd_ctl(EVENT_CMD_AUDIO_MUTE_TOGGLE, NULL);
|
||||||
|
|
||||||
|
if (runloop_cmd_triggered(cmd, RARCH_OSK))
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (runloop_cmd_press(cmd, RARCH_VOLUME_UP))
|
||||||
|
event_cmd_ctl(EVENT_CMD_VOLUME_UP, NULL);
|
||||||
|
else if (runloop_cmd_press(cmd, RARCH_VOLUME_DOWN))
|
||||||
|
event_cmd_ctl(EVENT_CMD_VOLUME_DOWN, NULL);
|
||||||
|
|
||||||
|
#ifdef HAVE_NETPLAY
|
||||||
|
tmp = runloop_cmd_triggered(cmd, RARCH_NETPLAY_FLIP);
|
||||||
|
netplay_driver_ctl(RARCH_NETPLAY_CTL_FLIP_PLAYERS, &tmp);
|
||||||
|
tmp = runloop_cmd_triggered(cmd, RARCH_FULLSCREEN_TOGGLE_KEY);
|
||||||
|
netplay_driver_ctl(RARCH_NETPLAY_CTL_FULLSCREEN_TOGGLE, &tmp);
|
||||||
|
#endif
|
||||||
|
if (!runloop_ctl(RUNLOOP_CTL_CHECK_IDLE_STATE, cmd))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
check_fast_forward_button(
|
||||||
|
runloop_cmd_triggered(cmd, RARCH_FAST_FORWARD_KEY),
|
||||||
|
runloop_cmd_press (cmd, RARCH_FAST_FORWARD_HOLD_KEY),
|
||||||
|
runloop_cmd_pressed (cmd, RARCH_FAST_FORWARD_HOLD_KEY));
|
||||||
|
check_stateslots(settings,
|
||||||
|
runloop_cmd_triggered(cmd, RARCH_STATE_SLOT_PLUS),
|
||||||
|
runloop_cmd_triggered(cmd, RARCH_STATE_SLOT_MINUS)
|
||||||
|
);
|
||||||
|
|
||||||
|
if (runloop_cmd_triggered(cmd, RARCH_SAVE_STATE_KEY))
|
||||||
|
event_cmd_ctl(EVENT_CMD_SAVE_STATE, NULL);
|
||||||
|
else if (runloop_cmd_triggered(cmd, RARCH_LOAD_STATE_KEY))
|
||||||
|
event_cmd_ctl(EVENT_CMD_LOAD_STATE, NULL);
|
||||||
|
|
||||||
|
#ifdef HAVE_CHEEVOS
|
||||||
|
if(!settings->cheevos.hardcore_mode_enable)
|
||||||
|
#endif
|
||||||
|
state_manager_check_rewind(runloop_cmd_press(cmd, RARCH_REWIND));
|
||||||
|
|
||||||
|
tmp = runloop_cmd_press(cmd, RARCH_SLOWMOTION);
|
||||||
|
|
||||||
|
runloop_ctl(RUNLOOP_CTL_CHECK_SLOWMOTION, &tmp);
|
||||||
|
|
||||||
|
if (runloop_cmd_triggered(cmd, RARCH_MOVIE_RECORD_TOGGLE))
|
||||||
|
runloop_ctl(RUNLOOP_CTL_CHECK_MOVIE, NULL);
|
||||||
|
|
||||||
|
check_shader_dir(shader_dir,
|
||||||
|
runloop_cmd_triggered(cmd, RARCH_SHADER_NEXT),
|
||||||
|
runloop_cmd_triggered(cmd, RARCH_SHADER_PREV));
|
||||||
|
|
||||||
|
if (runloop_cmd_triggered(cmd, RARCH_DISK_EJECT_TOGGLE))
|
||||||
|
event_cmd_ctl(EVENT_CMD_DISK_EJECT_TOGGLE, NULL);
|
||||||
|
else if (runloop_cmd_triggered(cmd, RARCH_DISK_NEXT))
|
||||||
|
event_cmd_ctl(EVENT_CMD_DISK_NEXT, NULL);
|
||||||
|
else if (runloop_cmd_triggered(cmd, RARCH_DISK_PREV))
|
||||||
|
event_cmd_ctl(EVENT_CMD_DISK_PREV, NULL);
|
||||||
|
|
||||||
|
if (runloop_cmd_triggered(cmd, RARCH_RESET))
|
||||||
|
event_cmd_ctl(EVENT_CMD_RESET, NULL);
|
||||||
|
|
||||||
|
cheat_manager_state_checks(
|
||||||
|
runloop_cmd_triggered(cmd, RARCH_CHEAT_INDEX_PLUS),
|
||||||
|
runloop_cmd_triggered(cmd, RARCH_CHEAT_INDEX_MINUS),
|
||||||
|
runloop_cmd_triggered(cmd, RARCH_CHEAT_TOGGLE));
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool runloop_check_pause_state(event_cmd_state_t *cmd)
|
||||||
|
{
|
||||||
|
bool check_is_oneshot = false;
|
||||||
|
|
||||||
|
if (!cmd)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
check_is_oneshot = runloop_cmd_triggered(cmd,
|
||||||
|
RARCH_FRAMEADVANCE)
|
||||||
|
|| runloop_cmd_press(cmd, RARCH_REWIND);
|
||||||
|
|
||||||
|
if (!runloop_ctl(RUNLOOP_CTL_IS_PAUSED, NULL))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (runloop_cmd_triggered(cmd, RARCH_FULLSCREEN_TOGGLE_KEY))
|
||||||
|
{
|
||||||
|
event_cmd_ctl(EVENT_CMD_FULLSCREEN_TOGGLE, NULL);
|
||||||
|
video_driver_ctl(RARCH_DISPLAY_CTL_CACHED_FRAME_RENDER, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!check_is_oneshot)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool runloop_ctl(enum runloop_ctl_state state, void *data)
|
bool runloop_ctl(enum runloop_ctl_state state, void *data)
|
||||||
{
|
{
|
||||||
static rarch_dir_list_t runloop_shader_dir;
|
static rarch_dir_list_t runloop_shader_dir;
|
||||||
@ -676,115 +789,9 @@ bool runloop_ctl(enum runloop_ctl_state state, void *data)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case RUNLOOP_CTL_CHECK_STATE:
|
case RUNLOOP_CTL_CHECK_STATE:
|
||||||
{
|
return runloop_check_state((event_cmd_state_t*)data, &runloop_shader_dir);
|
||||||
bool tmp = false;
|
|
||||||
event_cmd_state_t *cmd = (event_cmd_state_t*)data;
|
|
||||||
|
|
||||||
if (!cmd || runloop_idle)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (runloop_cmd_triggered(cmd, RARCH_SCREENSHOT))
|
|
||||||
event_cmd_ctl(EVENT_CMD_TAKE_SCREENSHOT, NULL);
|
|
||||||
|
|
||||||
if (runloop_cmd_triggered(cmd, RARCH_MUTE))
|
|
||||||
event_cmd_ctl(EVENT_CMD_AUDIO_MUTE_TOGGLE, NULL);
|
|
||||||
|
|
||||||
if (runloop_cmd_triggered(cmd, RARCH_OSK))
|
|
||||||
{
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (runloop_cmd_press(cmd, RARCH_VOLUME_UP))
|
|
||||||
event_cmd_ctl(EVENT_CMD_VOLUME_UP, NULL);
|
|
||||||
else if (runloop_cmd_press(cmd, RARCH_VOLUME_DOWN))
|
|
||||||
event_cmd_ctl(EVENT_CMD_VOLUME_DOWN, NULL);
|
|
||||||
|
|
||||||
#ifdef HAVE_NETPLAY
|
|
||||||
tmp = runloop_cmd_triggered(cmd, RARCH_NETPLAY_FLIP);
|
|
||||||
netplay_driver_ctl(RARCH_NETPLAY_CTL_FLIP_PLAYERS, &tmp);
|
|
||||||
tmp = runloop_cmd_triggered(cmd, RARCH_FULLSCREEN_TOGGLE_KEY);
|
|
||||||
netplay_driver_ctl(RARCH_NETPLAY_CTL_FULLSCREEN_TOGGLE, &tmp);
|
|
||||||
#endif
|
|
||||||
if (!runloop_ctl(RUNLOOP_CTL_CHECK_IDLE_STATE, data))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
check_fast_forward_button(
|
|
||||||
runloop_cmd_triggered(cmd, RARCH_FAST_FORWARD_KEY),
|
|
||||||
runloop_cmd_press (cmd, RARCH_FAST_FORWARD_HOLD_KEY),
|
|
||||||
runloop_cmd_pressed (cmd, RARCH_FAST_FORWARD_HOLD_KEY));
|
|
||||||
check_stateslots(settings,
|
|
||||||
runloop_cmd_triggered(cmd, RARCH_STATE_SLOT_PLUS),
|
|
||||||
runloop_cmd_triggered(cmd, RARCH_STATE_SLOT_MINUS)
|
|
||||||
);
|
|
||||||
|
|
||||||
if (runloop_cmd_triggered(cmd, RARCH_SAVE_STATE_KEY))
|
|
||||||
event_cmd_ctl(EVENT_CMD_SAVE_STATE, NULL);
|
|
||||||
else if (runloop_cmd_triggered(cmd, RARCH_LOAD_STATE_KEY))
|
|
||||||
event_cmd_ctl(EVENT_CMD_LOAD_STATE, NULL);
|
|
||||||
|
|
||||||
#ifdef HAVE_CHEEVOS
|
|
||||||
if(!settings->cheevos.hardcore_mode_enable)
|
|
||||||
#endif
|
|
||||||
state_manager_check_rewind(runloop_cmd_press(cmd, RARCH_REWIND));
|
|
||||||
|
|
||||||
tmp = runloop_cmd_press(cmd, RARCH_SLOWMOTION);
|
|
||||||
|
|
||||||
runloop_ctl(RUNLOOP_CTL_CHECK_SLOWMOTION, &tmp);
|
|
||||||
|
|
||||||
if (runloop_cmd_triggered(cmd, RARCH_MOVIE_RECORD_TOGGLE))
|
|
||||||
runloop_ctl(RUNLOOP_CTL_CHECK_MOVIE, NULL);
|
|
||||||
|
|
||||||
check_shader_dir(&runloop_shader_dir,
|
|
||||||
runloop_cmd_triggered(cmd, RARCH_SHADER_NEXT),
|
|
||||||
runloop_cmd_triggered(cmd, RARCH_SHADER_PREV));
|
|
||||||
|
|
||||||
if (runloop_cmd_triggered(cmd, RARCH_DISK_EJECT_TOGGLE))
|
|
||||||
event_cmd_ctl(EVENT_CMD_DISK_EJECT_TOGGLE, NULL);
|
|
||||||
else if (runloop_cmd_triggered(cmd, RARCH_DISK_NEXT))
|
|
||||||
event_cmd_ctl(EVENT_CMD_DISK_NEXT, NULL);
|
|
||||||
else if (runloop_cmd_triggered(cmd, RARCH_DISK_PREV))
|
|
||||||
event_cmd_ctl(EVENT_CMD_DISK_PREV, NULL);
|
|
||||||
|
|
||||||
if (runloop_cmd_triggered(cmd, RARCH_RESET))
|
|
||||||
event_cmd_ctl(EVENT_CMD_RESET, NULL);
|
|
||||||
|
|
||||||
cheat_manager_state_checks(
|
|
||||||
runloop_cmd_triggered(cmd, RARCH_CHEAT_INDEX_PLUS),
|
|
||||||
runloop_cmd_triggered(cmd, RARCH_CHEAT_INDEX_MINUS),
|
|
||||||
runloop_cmd_triggered(cmd, RARCH_CHEAT_TOGGLE));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case RUNLOOP_CTL_CHECK_PAUSE_STATE:
|
case RUNLOOP_CTL_CHECK_PAUSE_STATE:
|
||||||
{
|
return runloop_check_pause_state((event_cmd_state_t*)data);
|
||||||
bool check_is_oneshot;
|
|
||||||
event_cmd_state_t *cmd = (event_cmd_state_t*)data;
|
|
||||||
|
|
||||||
if (!cmd)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
check_is_oneshot = runloop_cmd_triggered(cmd,
|
|
||||||
RARCH_FRAMEADVANCE)
|
|
||||||
|| runloop_cmd_press(cmd, RARCH_REWIND);
|
|
||||||
|
|
||||||
if (!runloop_paused)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
if (runloop_cmd_triggered(cmd, RARCH_FULLSCREEN_TOGGLE_KEY))
|
|
||||||
{
|
|
||||||
event_cmd_ctl(EVENT_CMD_FULLSCREEN_TOGGLE, NULL);
|
|
||||||
video_driver_ctl(RARCH_DISPLAY_CTL_CACHED_FRAME_RENDER, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!check_is_oneshot)
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case RUNLOOP_CTL_CHECK_SLOWMOTION:
|
case RUNLOOP_CTL_CHECK_SLOWMOTION:
|
||||||
{
|
{
|
||||||
bool *ptr = (bool*)data;
|
bool *ptr = (bool*)data;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user