mirror of
https://github.com/libretro/RetroArch
synced 2025-01-31 15:32:59 +00:00
Move more variables to rarch global state struct
This commit is contained in:
parent
c637686a76
commit
7cfbe73288
316
retroarch.c
316
retroarch.c
@ -1146,7 +1146,7 @@ static const camera_driver_t *camera_drivers[] = {
|
||||
* d) Video driver no longer alive.
|
||||
* e) End of BSV movie and BSV EOF exit is true. (TODO/FIXME - explain better)
|
||||
*/
|
||||
#define TIME_TO_EXIT(quit_key_pressed) (runloop_shutdown_initiated || quit_key_pressed || !is_alive || BSV_MOVIE_IS_EOF() || ((runloop_max_frames != 0) && (frame_count >= runloop_max_frames)) || runloop_exec)
|
||||
#define TIME_TO_EXIT(quit_key_pressed) (p_rarch->runloop_shutdown_initiated || quit_key_pressed || !is_alive || BSV_MOVIE_IS_EOF() || ((runloop_max_frames != 0) && (frame_count >= runloop_max_frames)) || runloop_exec)
|
||||
|
||||
/* Depends on ASCII character values */
|
||||
#define ISPRINT(c) (((int)(c) >= ' ' && (int)(c) <= '~') ? 1 : 0)
|
||||
@ -1691,6 +1691,21 @@ struct rarch_state
|
||||
bool rarch_is_switching_display_mode;
|
||||
bool rarch_is_sram_load_disabled;
|
||||
bool rarch_is_sram_save_disabled;
|
||||
bool rarch_use_sram;
|
||||
bool rarch_ups_pref;
|
||||
bool rarch_bps_pref;
|
||||
bool rarch_ips_pref;
|
||||
bool rarch_patch_blocked;
|
||||
bool runloop_missing_bios;
|
||||
bool runloop_force_nonblock;
|
||||
bool runloop_paused;
|
||||
bool runloop_idle;
|
||||
bool runloop_slowmotion;
|
||||
bool runloop_fastmotion;
|
||||
bool runloop_shutdown_initiated;
|
||||
bool runloop_core_shutdown_initiated;
|
||||
bool runloop_core_running;
|
||||
bool runloop_perfcnt_enable;
|
||||
};
|
||||
|
||||
|
||||
@ -1723,21 +1738,6 @@ static retro_usec_t runloop_frame_time_last = 0;
|
||||
/* TODO/FIXME - static public global variable */
|
||||
bool discord_is_inited = false;
|
||||
#endif
|
||||
static bool rarch_use_sram = false;
|
||||
static bool rarch_ups_pref = false;
|
||||
static bool rarch_bps_pref = false;
|
||||
static bool rarch_ips_pref = false;
|
||||
static bool rarch_patch_blocked = false;
|
||||
static bool runloop_missing_bios = false;
|
||||
static bool runloop_force_nonblock = false;
|
||||
static bool runloop_paused = false;
|
||||
static bool runloop_idle = false;
|
||||
static bool runloop_slowmotion = false;
|
||||
static bool runloop_fastmotion = false;
|
||||
static bool runloop_shutdown_initiated = false;
|
||||
static bool runloop_core_shutdown_initiated = false;
|
||||
static bool runloop_core_running = false;
|
||||
static bool runloop_perfcnt_enable = false;
|
||||
#ifdef HAVE_CONFIGFILE
|
||||
static bool rarch_block_config_read = false;
|
||||
static bool runloop_overrides_active = false;
|
||||
@ -1748,9 +1748,6 @@ static bool runloop_remaps_content_dir_active = false;
|
||||
static bool runloop_game_options_active = false;
|
||||
static bool runloop_autosave = false;
|
||||
static bool runloop_max_frames_screenshot = false;
|
||||
#ifdef HAVE_RUNAHEAD
|
||||
static bool has_variable_update = false;
|
||||
#endif
|
||||
#if defined(HAVE_CG) || defined(HAVE_GLSL) || defined(HAVE_SLANG) || defined(HAVE_HLSL)
|
||||
static bool shader_presets_need_reload = true;
|
||||
static bool cli_shader_disable = false;
|
||||
@ -1802,6 +1799,7 @@ static bool audio_driver_active = false;
|
||||
static bool audio_suspended = false;
|
||||
|
||||
#ifdef HAVE_RUNAHEAD
|
||||
static bool has_variable_update = false;
|
||||
static bool runahead_save_state_size_known = false;
|
||||
static bool request_fast_savestate = false;
|
||||
static bool hard_disable_audio = false;
|
||||
@ -3129,12 +3127,12 @@ static bool path_init_subsystem(void)
|
||||
static void path_init_savefile(void)
|
||||
{
|
||||
struct rarch_state *p_rarch = &rarch_st;
|
||||
bool should_sram_be_used = rarch_use_sram
|
||||
bool should_sram_be_used = p_rarch->rarch_use_sram
|
||||
&& !p_rarch->rarch_is_sram_save_disabled;
|
||||
|
||||
rarch_use_sram = should_sram_be_used;
|
||||
p_rarch->rarch_use_sram = should_sram_be_used;
|
||||
|
||||
if (!rarch_use_sram)
|
||||
if (!p_rarch->rarch_use_sram)
|
||||
{
|
||||
RARCH_LOG("%s\n",
|
||||
msg_hash_to_str(MSG_SRAM_WILL_NOT_BE_SAVED));
|
||||
@ -4138,7 +4136,8 @@ static void retroarch_msg_queue_init(void)
|
||||
#ifdef HAVE_THREADS
|
||||
static void retroarch_autosave_deinit(void)
|
||||
{
|
||||
if (rarch_use_sram)
|
||||
struct rarch_state *p_rarch = &rarch_st;
|
||||
if (p_rarch->rarch_use_sram)
|
||||
autosave_deinit();
|
||||
}
|
||||
#endif
|
||||
@ -4186,9 +4185,10 @@ static bool command_version(const char* arg)
|
||||
|
||||
static bool command_get_status(const char* arg)
|
||||
{
|
||||
char reply[4096] = {0};
|
||||
bool contentless = false;
|
||||
bool is_inited = false;
|
||||
char reply[4096] = {0};
|
||||
bool contentless = false;
|
||||
bool is_inited = false;
|
||||
struct rarch_state *p_rarch = &rarch_st;
|
||||
|
||||
content_get_status(&contentless, &is_inited);
|
||||
|
||||
@ -4205,7 +4205,7 @@ static bool command_get_status(const char* arg)
|
||||
|
||||
core_info_get_current_core(&core_info);
|
||||
|
||||
if (runloop_paused)
|
||||
if (p_rarch->runloop_paused)
|
||||
status = "PAUSED";
|
||||
if (core_info)
|
||||
system_id = core_info->system_id;
|
||||
@ -4823,7 +4823,8 @@ error:
|
||||
#ifdef HAVE_TRANSLATE
|
||||
static bool task_auto_translate_callback(void)
|
||||
{
|
||||
bool was_paused = runloop_paused;
|
||||
struct rarch_state *p_rarch = &rarch_st;
|
||||
bool was_paused = p_rarch->runloop_paused;
|
||||
command_event(CMD_EVENT_AI_SERVICE_CALL, &was_paused);
|
||||
return true;
|
||||
}
|
||||
@ -4946,8 +4947,8 @@ static void handle_translation_cb(
|
||||
char* key_string = NULL;
|
||||
int curr_state = 0;
|
||||
settings_t* settings = configuration_settings;
|
||||
bool was_paused = runloop_paused;
|
||||
struct rarch_state *p_rarch = &rarch_st;
|
||||
bool was_paused = p_rarch->runloop_paused;
|
||||
const enum retro_pixel_format
|
||||
video_driver_pix_fmt = p_rarch->video_driver_pix_fmt;
|
||||
|
||||
@ -6426,7 +6427,7 @@ static bool event_init_content(void)
|
||||
|
||||
/* TODO/FIXME - just because we have a contentless core does not
|
||||
* necessarily mean there should be no SRAM, try to find a solution here */
|
||||
rarch_use_sram = (current_core_type == CORE_TYPE_PLAIN)
|
||||
p_rarch->rarch_use_sram = (current_core_type == CORE_TYPE_PLAIN)
|
||||
&& !contentless;
|
||||
|
||||
/* No content to be loaded for dummy core,
|
||||
@ -6443,7 +6444,7 @@ static bool event_init_content(void)
|
||||
|
||||
if (!content_init())
|
||||
{
|
||||
runloop_core_running = false;
|
||||
p_rarch->runloop_core_running = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -7110,8 +7111,10 @@ static void retroarch_pause_checks(void)
|
||||
#ifdef HAVE_DISCORD
|
||||
discord_userdata_t userdata;
|
||||
#endif
|
||||
bool is_paused = runloop_paused;
|
||||
bool is_idle = runloop_idle;
|
||||
struct rarch_state
|
||||
*p_rarch = &rarch_st;
|
||||
bool is_paused = p_rarch->runloop_paused;
|
||||
bool is_idle = p_rarch->runloop_idle;
|
||||
#if defined(HAVE_GFX_WIDGETS)
|
||||
bool widgets_active = gfx_widgets_active();
|
||||
|
||||
@ -7228,7 +7231,7 @@ bool command_event(enum event_command cmd, void *data)
|
||||
switch (cmd)
|
||||
{
|
||||
case CMD_EVENT_SAVE_FILES:
|
||||
event_save_files(rarch_use_sram);
|
||||
event_save_files(p_rarch->rarch_use_sram);
|
||||
break;
|
||||
case CMD_EVENT_OVERLAY_DEINIT:
|
||||
#ifdef HAVE_OVERLAY
|
||||
@ -7284,7 +7287,7 @@ bool command_event(enum event_command cmd, void *data)
|
||||
else if (ai_service_pause)
|
||||
{
|
||||
/* pause on call, unpause on second press. */
|
||||
if (!runloop_paused)
|
||||
if (!p_rarch->runloop_paused)
|
||||
{
|
||||
command_event(CMD_EVENT_PAUSE, NULL);
|
||||
command_event(CMD_EVENT_AI_SERVICE_CALL, NULL);
|
||||
@ -7515,7 +7518,7 @@ bool command_event(enum event_command cmd, void *data)
|
||||
|
||||
content_get_status(&contentless, &is_inited);
|
||||
|
||||
runloop_core_running = false;
|
||||
p_rarch->runloop_core_running = false;
|
||||
|
||||
/* Save last selected disk index, if required */
|
||||
if (sys_info)
|
||||
@ -7658,7 +7661,7 @@ bool command_event(enum event_command cmd, void *data)
|
||||
return false;
|
||||
break;
|
||||
case CMD_EVENT_AUDIO_START:
|
||||
if (!audio_driver_start(runloop_shutdown_initiated))
|
||||
if (!audio_driver_start(p_rarch->runloop_shutdown_initiated))
|
||||
return false;
|
||||
break;
|
||||
case CMD_EVENT_AUDIO_MUTE_TOGGLE:
|
||||
@ -8104,7 +8107,7 @@ bool command_event(enum event_command cmd, void *data)
|
||||
ui_companion_event_command(cmd);
|
||||
break;
|
||||
case CMD_EVENT_PAUSE_TOGGLE:
|
||||
boolean = runloop_paused;
|
||||
boolean = p_rarch->runloop_paused;
|
||||
boolean = !boolean;
|
||||
|
||||
#ifdef HAVE_ACCESSIBILITY
|
||||
@ -8117,17 +8120,17 @@ bool command_event(enum event_command cmd, void *data)
|
||||
}
|
||||
#endif
|
||||
|
||||
runloop_paused = boolean;
|
||||
p_rarch->runloop_paused = boolean;
|
||||
retroarch_pause_checks();
|
||||
break;
|
||||
case CMD_EVENT_UNPAUSE:
|
||||
boolean = false;
|
||||
runloop_paused = boolean;
|
||||
boolean = false;
|
||||
p_rarch->runloop_paused = boolean;
|
||||
retroarch_pause_checks();
|
||||
break;
|
||||
case CMD_EVENT_PAUSE:
|
||||
boolean = true;
|
||||
runloop_paused = boolean;
|
||||
boolean = true;
|
||||
p_rarch->runloop_paused = boolean;
|
||||
retroarch_pause_checks();
|
||||
break;
|
||||
case CMD_EVENT_MENU_PAUSE_LIBRETRO:
|
||||
@ -8633,7 +8636,7 @@ bool command_event(enum event_command cmd, void *data)
|
||||
#endif
|
||||
else
|
||||
{
|
||||
bool paused = runloop_paused;
|
||||
bool paused = p_rarch->runloop_paused;
|
||||
if (data!=NULL)
|
||||
paused = *((bool*)data);
|
||||
|
||||
@ -8819,11 +8822,11 @@ static void global_free(void)
|
||||
|
||||
p_rarch->rarch_is_sram_load_disabled = false;
|
||||
p_rarch->rarch_is_sram_save_disabled = false;
|
||||
rarch_use_sram = false;
|
||||
p_rarch->rarch_use_sram = false;
|
||||
rarch_ctl(RARCH_CTL_UNSET_BPS_PREF, NULL);
|
||||
rarch_ctl(RARCH_CTL_UNSET_IPS_PREF, NULL);
|
||||
rarch_ctl(RARCH_CTL_UNSET_UPS_PREF, NULL);
|
||||
rarch_patch_blocked = false;
|
||||
p_rarch->rarch_patch_blocked = false;
|
||||
#ifdef HAVE_CONFIGFILE
|
||||
rarch_block_config_read = false;
|
||||
runloop_overrides_active = false;
|
||||
@ -8885,7 +8888,7 @@ void main_exit(void *args)
|
||||
#endif
|
||||
rarch_ctl(RARCH_CTL_MAIN_DEINIT, NULL);
|
||||
|
||||
if (runloop_perfcnt_enable)
|
||||
if (p_rarch->runloop_perfcnt_enable)
|
||||
rarch_perf_log();
|
||||
|
||||
#if defined(HAVE_LOGGER) && !defined(ANDROID)
|
||||
@ -10024,7 +10027,8 @@ static void rarch_log_libretro(enum retro_log_level level,
|
||||
|
||||
static void core_performance_counter_start(struct retro_perf_counter *perf)
|
||||
{
|
||||
if (runloop_perfcnt_enable)
|
||||
struct rarch_state *p_rarch = &rarch_st;
|
||||
if (p_rarch->runloop_perfcnt_enable)
|
||||
{
|
||||
perf->call_cnt++;
|
||||
perf->start = cpu_features_get_perf_counter();
|
||||
@ -10033,7 +10037,8 @@ static void core_performance_counter_start(struct retro_perf_counter *perf)
|
||||
|
||||
static void core_performance_counter_stop(struct retro_perf_counter *perf)
|
||||
{
|
||||
if (runloop_perfcnt_enable)
|
||||
struct rarch_state *p_rarch = &rarch_st;
|
||||
if (p_rarch->runloop_perfcnt_enable)
|
||||
perf->total += cpu_features_get_perf_counter() - perf->start;
|
||||
}
|
||||
|
||||
@ -10335,8 +10340,8 @@ static bool rarch_environment_cb(unsigned cmd, void *data)
|
||||
* been cleared (causing log to be skipped) */
|
||||
command_event_runtime_log_deinit();
|
||||
|
||||
runloop_shutdown_initiated = true;
|
||||
runloop_core_shutdown_initiated = true;
|
||||
p_rarch->runloop_shutdown_initiated = true;
|
||||
p_rarch->runloop_core_shutdown_initiated = true;
|
||||
break;
|
||||
|
||||
case RETRO_ENVIRONMENT_SET_PERFORMANCE_LEVEL:
|
||||
@ -11231,7 +11236,7 @@ static bool rarch_environment_cb(unsigned cmd, void *data)
|
||||
}
|
||||
|
||||
case RETRO_ENVIRONMENT_GET_FASTFORWARDING:
|
||||
*(bool *)data = runloop_fastmotion;
|
||||
*(bool *)data = p_rarch->runloop_fastmotion;
|
||||
break;
|
||||
|
||||
case RETRO_ENVIRONMENT_GET_INPUT_BITMASKS:
|
||||
@ -19901,6 +19906,7 @@ static void audio_driver_flush(const int16_t *data, size_t samples,
|
||||
**/
|
||||
static void audio_driver_sample(int16_t left, int16_t right)
|
||||
{
|
||||
struct rarch_state *p_rarch = &rarch_st;
|
||||
if (audio_suspended)
|
||||
return;
|
||||
|
||||
@ -19920,12 +19926,13 @@ static void audio_driver_sample(int16_t left, int16_t right)
|
||||
recording_driver->push_audio(recording_data, &ffemu_data);
|
||||
}
|
||||
|
||||
if (!(runloop_paused ||
|
||||
if (!(p_rarch->runloop_paused ||
|
||||
!audio_driver_active ||
|
||||
!audio_driver_input_data ||
|
||||
!audio_driver_output_samples_buf))
|
||||
audio_driver_flush(audio_driver_output_samples_conv_buf,
|
||||
audio_driver_data_ptr, runloop_slowmotion, runloop_fastmotion);
|
||||
audio_driver_data_ptr, p_rarch->runloop_slowmotion,
|
||||
p_rarch->runloop_fastmotion);
|
||||
|
||||
audio_driver_data_ptr = 0;
|
||||
}
|
||||
@ -19938,8 +19945,9 @@ static void audio_driver_menu_sample(void)
|
||||
const struct retro_system_timing *info =
|
||||
(const struct retro_system_timing*)&av_info->timing;
|
||||
unsigned sample_count = (info->sample_rate / info->fps) * 2;
|
||||
struct rarch_state *p_rarch = &rarch_st;
|
||||
bool check_flush = !(
|
||||
runloop_paused ||
|
||||
p_rarch->runloop_paused ||
|
||||
!audio_driver_active ||
|
||||
!audio_driver_input_data ||
|
||||
!audio_driver_output_samples_buf);
|
||||
@ -19956,7 +19964,9 @@ static void audio_driver_menu_sample(void)
|
||||
recording_driver->push_audio(recording_data, &ffemu_data);
|
||||
}
|
||||
if (check_flush)
|
||||
audio_driver_flush(samples_buf, 1024, runloop_slowmotion, runloop_fastmotion);
|
||||
audio_driver_flush(samples_buf, 1024,
|
||||
p_rarch->runloop_slowmotion,
|
||||
p_rarch->runloop_fastmotion);
|
||||
sample_count -= 1024;
|
||||
}
|
||||
if (recording_data && recording_driver && recording_driver->push_audio)
|
||||
@ -19969,7 +19979,9 @@ static void audio_driver_menu_sample(void)
|
||||
recording_driver->push_audio(recording_data, &ffemu_data);
|
||||
}
|
||||
if (check_flush)
|
||||
audio_driver_flush(samples_buf, sample_count, runloop_slowmotion, runloop_fastmotion);
|
||||
audio_driver_flush(samples_buf, sample_count,
|
||||
p_rarch->runloop_slowmotion,
|
||||
p_rarch->runloop_fastmotion);
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -19985,6 +19997,7 @@ static void audio_driver_menu_sample(void)
|
||||
**/
|
||||
static size_t audio_driver_sample_batch(const int16_t *data, size_t frames)
|
||||
{
|
||||
struct rarch_state *p_rarch = &rarch_st;
|
||||
if (frames > (AUDIO_CHUNK_SIZE_NONBLOCKING >> 1))
|
||||
frames = AUDIO_CHUNK_SIZE_NONBLOCKING >> 1;
|
||||
|
||||
@ -20002,11 +20015,13 @@ static size_t audio_driver_sample_batch(const int16_t *data, size_t frames)
|
||||
}
|
||||
|
||||
if (!(
|
||||
runloop_paused ||
|
||||
p_rarch->runloop_paused ||
|
||||
!audio_driver_active ||
|
||||
!audio_driver_input_data ||
|
||||
!audio_driver_output_samples_buf))
|
||||
audio_driver_flush(data, frames << 1, runloop_slowmotion, runloop_fastmotion);
|
||||
audio_driver_flush(data, frames << 1,
|
||||
p_rarch->runloop_slowmotion,
|
||||
p_rarch->runloop_fastmotion);
|
||||
|
||||
return frames;
|
||||
}
|
||||
@ -20791,6 +20806,7 @@ static bool audio_driver_stop(void)
|
||||
|
||||
void audio_driver_frame_is_reverse(void)
|
||||
{
|
||||
struct rarch_state *p_rarch = &rarch_st;
|
||||
/* We just rewound. Flush rewind audio buffer. */
|
||||
if (recording_data && recording_driver && recording_driver->push_audio)
|
||||
{
|
||||
@ -20803,14 +20819,15 @@ void audio_driver_frame_is_reverse(void)
|
||||
}
|
||||
|
||||
if (!(
|
||||
runloop_paused ||
|
||||
p_rarch->runloop_paused ||
|
||||
!audio_driver_active ||
|
||||
!audio_driver_input_data ||
|
||||
!audio_driver_output_samples_buf))
|
||||
audio_driver_flush(
|
||||
audio_driver_rewind_buf + audio_driver_rewind_ptr,
|
||||
audio_driver_rewind_size - audio_driver_rewind_ptr,
|
||||
runloop_slowmotion, runloop_fastmotion);
|
||||
p_rarch->runloop_slowmotion,
|
||||
p_rarch->runloop_fastmotion);
|
||||
}
|
||||
|
||||
void audio_set_float(enum audio_action action, float val)
|
||||
@ -21654,7 +21671,8 @@ static bool video_driver_init_internal(bool *video_is_threaded)
|
||||
video.width = width;
|
||||
video.height = height;
|
||||
video.fullscreen = settings->bools.video_fullscreen || retroarch_is_forced_fullscreen();
|
||||
video.vsync = settings->bools.video_vsync && !runloop_force_nonblock;
|
||||
video.vsync = settings->bools.video_vsync &&
|
||||
!p_rarch->runloop_force_nonblock;
|
||||
video.force_aspect = settings->bools.video_force_aspect;
|
||||
video.font_enable = settings->bools.video_font_enable;
|
||||
video.swap_interval = settings->uints.video_swap_interval;
|
||||
@ -22082,6 +22100,7 @@ void video_driver_cached_frame(void)
|
||||
|
||||
static void video_driver_monitor_adjust_system_rates(void)
|
||||
{
|
||||
struct rarch_state *p_rarch = &rarch_st;
|
||||
float timing_skew = 0.0f;
|
||||
settings_t *settings = configuration_settings;
|
||||
const struct retro_system_timing *info = (const struct retro_system_timing*)&video_driver_av_info.timing;
|
||||
@ -22117,7 +22136,7 @@ static void video_driver_monitor_adjust_system_rates(void)
|
||||
return;
|
||||
|
||||
/* We won't be able to do VSync reliably when game FPS > monitor FPS. */
|
||||
runloop_force_nonblock = true;
|
||||
p_rarch->runloop_force_nonblock = true;
|
||||
RARCH_LOG("[Video]: Game FPS > Monitor FPS. Cannot rely on VSync.\n");
|
||||
}
|
||||
|
||||
@ -22879,7 +22898,7 @@ static void video_driver_frame(const void *data, unsigned width,
|
||||
) && recording_data
|
||||
&& recording_driver && recording_driver->push_video)
|
||||
recording_dump_frame(data, width, height,
|
||||
pitch, runloop_idle);
|
||||
pitch, p_rarch->runloop_idle);
|
||||
|
||||
if (data && video_driver_state_filter)
|
||||
{
|
||||
@ -22900,7 +22919,7 @@ static void video_driver_frame(const void *data, unsigned width,
|
||||
&& recording_driver && recording_driver->push_video)
|
||||
recording_dump_frame(video_driver_state_buffer,
|
||||
output_width, output_height, output_pitch,
|
||||
runloop_idle);
|
||||
p_rarch->runloop_idle);
|
||||
|
||||
data = video_driver_state_buffer;
|
||||
width = output_width;
|
||||
@ -23159,6 +23178,7 @@ bool video_driver_texture_unload(uintptr_t *id)
|
||||
void video_driver_build_info(video_frame_info_t *video_info)
|
||||
{
|
||||
video_viewport_t *custom_vp = NULL;
|
||||
struct rarch_state *p_rarch = &rarch_st;
|
||||
settings_t *settings = configuration_settings;
|
||||
#ifdef HAVE_THREADS
|
||||
bool is_threaded = video_driver_is_threaded_internal();
|
||||
@ -23253,8 +23273,8 @@ void video_driver_build_info(video_frame_info_t *video_info)
|
||||
video_info->menu_wallpaper_opacity = 0.0f;
|
||||
#endif
|
||||
|
||||
video_info->runloop_is_paused = runloop_paused;
|
||||
video_info->runloop_is_slowmotion = runloop_slowmotion;
|
||||
video_info->runloop_is_paused = p_rarch->runloop_paused;
|
||||
video_info->runloop_is_slowmotion = p_rarch->runloop_slowmotion;
|
||||
|
||||
video_info->input_driver_nonblock_state = input_driver_nonblock_state;
|
||||
video_info->context_data = video_context_data;
|
||||
@ -24332,16 +24352,18 @@ static bool driver_find_next(const char *label, char *s, size_t len)
|
||||
|
||||
static void driver_adjust_system_rates(void)
|
||||
{
|
||||
struct rarch_state *p_rarch = &rarch_st;
|
||||
|
||||
audio_driver_monitor_adjust_system_rates();
|
||||
|
||||
runloop_force_nonblock = false;
|
||||
p_rarch->runloop_force_nonblock = false;
|
||||
|
||||
video_driver_monitor_adjust_system_rates();
|
||||
|
||||
if (!video_driver_get_ptr_internal(false))
|
||||
return;
|
||||
|
||||
if (runloop_force_nonblock)
|
||||
if (p_rarch->runloop_force_nonblock)
|
||||
{
|
||||
settings_t *settings = configuration_settings;
|
||||
bool video_adaptive_vsync = settings->bools.video_adaptive_vsync;
|
||||
@ -24368,6 +24390,7 @@ static void driver_adjust_system_rates(void)
|
||||
**/
|
||||
void driver_set_nonblock_state(void)
|
||||
{
|
||||
struct rarch_state *p_rarch = &rarch_st;
|
||||
bool enable = input_driver_nonblock_state;
|
||||
settings_t *settings = configuration_settings;
|
||||
bool audio_sync = settings->bools.audio_sync;
|
||||
@ -24381,7 +24404,7 @@ void driver_set_nonblock_state(void)
|
||||
if (current_video->set_nonblock_state)
|
||||
{
|
||||
bool video_nonblock = enable;
|
||||
if (!video_vsync || runloop_force_nonblock)
|
||||
if (!video_vsync || p_rarch->runloop_force_nonblock)
|
||||
video_nonblock = true;
|
||||
current_video->set_nonblock_state(video_driver_data, video_nonblock,
|
||||
video_driver_test_all_flags(GFX_CTX_FLAGS_ADAPTIVE_VSYNC) &&
|
||||
@ -25443,11 +25466,12 @@ force_input_dirty:
|
||||
|
||||
static retro_time_t rarch_core_runtime_tick(retro_time_t current_time)
|
||||
{
|
||||
struct rarch_state *p_rarch = &rarch_st;
|
||||
retro_time_t frame_time =
|
||||
(1.0 / video_driver_av_info.timing.fps) * 1000000;
|
||||
|
||||
/* Account for slow motion */
|
||||
if (runloop_slowmotion)
|
||||
if (p_rarch->runloop_slowmotion)
|
||||
{
|
||||
settings_t *settings = configuration_settings;
|
||||
float slowmotion_ratio = settings->floats.slowmotion_ratio;
|
||||
@ -25455,7 +25479,7 @@ static retro_time_t rarch_core_runtime_tick(retro_time_t current_time)
|
||||
}
|
||||
|
||||
/* Account for fast forward */
|
||||
if (runloop_fastmotion)
|
||||
if (p_rarch->runloop_fastmotion)
|
||||
{
|
||||
/* Doing it this way means we miss the first frame after
|
||||
* turning fast forward on, but it saves the overhead of
|
||||
@ -26185,26 +26209,26 @@ static void retroarch_parse_input_and_config(int argc, char *argv[])
|
||||
case RA_OPT_BPS:
|
||||
strlcpy(global->name.bps, optarg,
|
||||
sizeof(global->name.bps));
|
||||
rarch_bps_pref = true;
|
||||
p_rarch->rarch_bps_pref = true;
|
||||
retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_BPS_PREF, NULL);
|
||||
break;
|
||||
|
||||
case 'U':
|
||||
strlcpy(global->name.ups, optarg,
|
||||
sizeof(global->name.ups));
|
||||
rarch_ups_pref = true;
|
||||
p_rarch->rarch_ups_pref = true;
|
||||
retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_UPS_PREF, NULL);
|
||||
break;
|
||||
|
||||
case RA_OPT_IPS:
|
||||
strlcpy(global->name.ips, optarg,
|
||||
sizeof(global->name.ips));
|
||||
rarch_ips_pref = true;
|
||||
p_rarch->rarch_ips_pref = true;
|
||||
retroarch_override_setting_set(RARCH_OVERRIDE_SETTING_IPS_PREF, NULL);
|
||||
break;
|
||||
|
||||
case RA_OPT_NO_PATCH:
|
||||
rarch_patch_blocked = true;
|
||||
p_rarch->rarch_patch_blocked = true;
|
||||
break;
|
||||
|
||||
case 'D':
|
||||
@ -26721,6 +26745,7 @@ static 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;
|
||||
struct rarch_state *p_rarch = &rarch_st;
|
||||
settings_t *settings = configuration_settings;
|
||||
bool pause_libretro = settings ?
|
||||
settings->bools.menu_pause_libretro : false;
|
||||
@ -26794,7 +26819,7 @@ static void menu_driver_toggle(bool on)
|
||||
IMDisableDim();
|
||||
#endif
|
||||
|
||||
if (!runloop_shutdown_initiated)
|
||||
if (!p_rarch->runloop_shutdown_initiated)
|
||||
driver_set_nonblock_state();
|
||||
|
||||
if (pause_libretro && !audio_enable_menu)
|
||||
@ -27091,25 +27116,25 @@ bool rarch_ctl(enum rarch_ctl_state state, void *data)
|
||||
case RARCH_CTL_HAS_SET_SUBSYSTEMS:
|
||||
return (current_core.has_set_subsystems);
|
||||
case RARCH_CTL_CORE_IS_RUNNING:
|
||||
return runloop_core_running;
|
||||
return p_rarch->runloop_core_running;
|
||||
case RARCH_CTL_BSV_MOVIE_IS_INITED:
|
||||
return (bsv_movie_state_handle != NULL);
|
||||
case RARCH_CTL_IS_PATCH_BLOCKED:
|
||||
return rarch_patch_blocked;
|
||||
return p_rarch->rarch_patch_blocked;
|
||||
case RARCH_CTL_IS_BPS_PREF:
|
||||
return rarch_bps_pref;
|
||||
return p_rarch->rarch_bps_pref;
|
||||
case RARCH_CTL_UNSET_BPS_PREF:
|
||||
rarch_bps_pref = false;
|
||||
p_rarch->rarch_bps_pref = false;
|
||||
break;
|
||||
case RARCH_CTL_IS_UPS_PREF:
|
||||
return rarch_ups_pref;
|
||||
return p_rarch->rarch_ups_pref;
|
||||
case RARCH_CTL_UNSET_UPS_PREF:
|
||||
rarch_ups_pref = false;
|
||||
p_rarch->rarch_ups_pref = false;
|
||||
break;
|
||||
case RARCH_CTL_IS_IPS_PREF:
|
||||
return rarch_ips_pref;
|
||||
return p_rarch->rarch_ips_pref;
|
||||
case RARCH_CTL_UNSET_IPS_PREF:
|
||||
rarch_ips_pref = false;
|
||||
p_rarch->rarch_ips_pref = false;
|
||||
break;
|
||||
case RARCH_CTL_IS_DUMMY_CORE:
|
||||
return (p_rarch->current_core_type == CORE_TYPE_DUMMY);
|
||||
@ -27208,13 +27233,13 @@ bool rarch_ctl(enum rarch_ctl_state state, void *data)
|
||||
return runloop_remaps_content_dir_active;
|
||||
#endif
|
||||
case RARCH_CTL_SET_MISSING_BIOS:
|
||||
runloop_missing_bios = true;
|
||||
p_rarch->runloop_missing_bios = true;
|
||||
break;
|
||||
case RARCH_CTL_UNSET_MISSING_BIOS:
|
||||
runloop_missing_bios = false;
|
||||
p_rarch->runloop_missing_bios = false;
|
||||
break;
|
||||
case RARCH_CTL_IS_MISSING_BIOS:
|
||||
return runloop_missing_bios;
|
||||
return p_rarch->runloop_missing_bios;
|
||||
case RARCH_CTL_IS_GAME_OPTIONS_ACTIVE:
|
||||
return runloop_game_options_active;
|
||||
case RARCH_CTL_GET_PERFCNT:
|
||||
@ -27222,17 +27247,17 @@ bool rarch_ctl(enum rarch_ctl_state state, void *data)
|
||||
bool **perfcnt = (bool**)data;
|
||||
if (!perfcnt)
|
||||
return false;
|
||||
*perfcnt = &runloop_perfcnt_enable;
|
||||
*perfcnt = &p_rarch->runloop_perfcnt_enable;
|
||||
}
|
||||
break;
|
||||
case RARCH_CTL_SET_PERFCNT_ENABLE:
|
||||
runloop_perfcnt_enable = true;
|
||||
p_rarch->runloop_perfcnt_enable = true;
|
||||
break;
|
||||
case RARCH_CTL_UNSET_PERFCNT_ENABLE:
|
||||
runloop_perfcnt_enable = false;
|
||||
p_rarch->runloop_perfcnt_enable = false;
|
||||
break;
|
||||
case RARCH_CTL_IS_PERFCNT_ENABLE:
|
||||
return runloop_perfcnt_enable;
|
||||
return p_rarch->runloop_perfcnt_enable;
|
||||
case RARCH_CTL_SET_WINDOWED_SCALE:
|
||||
{
|
||||
unsigned *idx = (unsigned*)data;
|
||||
@ -27242,10 +27267,10 @@ bool rarch_ctl(enum rarch_ctl_state state, void *data)
|
||||
}
|
||||
break;
|
||||
case RARCH_CTL_STATE_FREE:
|
||||
runloop_perfcnt_enable = false;
|
||||
runloop_idle = false;
|
||||
runloop_paused = false;
|
||||
runloop_slowmotion = false;
|
||||
p_rarch->runloop_perfcnt_enable = false;
|
||||
p_rarch->runloop_idle = false;
|
||||
p_rarch->runloop_paused = false;
|
||||
p_rarch->runloop_slowmotion = false;
|
||||
#ifdef HAVE_CONFIGFILE
|
||||
runloop_overrides_active = false;
|
||||
#endif
|
||||
@ -27253,13 +27278,13 @@ bool rarch_ctl(enum rarch_ctl_state state, void *data)
|
||||
retroarch_frame_time_free();
|
||||
break;
|
||||
case RARCH_CTL_IS_IDLE:
|
||||
return runloop_idle;
|
||||
return p_rarch->runloop_idle;
|
||||
case RARCH_CTL_SET_IDLE:
|
||||
{
|
||||
bool *ptr = (bool*)data;
|
||||
if (!ptr)
|
||||
return false;
|
||||
runloop_idle = *ptr;
|
||||
p_rarch->runloop_idle = *ptr;
|
||||
}
|
||||
break;
|
||||
case RARCH_CTL_SET_PAUSED:
|
||||
@ -27267,13 +27292,13 @@ bool rarch_ctl(enum rarch_ctl_state state, void *data)
|
||||
bool *ptr = (bool*)data;
|
||||
if (!ptr)
|
||||
return false;
|
||||
runloop_paused = *ptr;
|
||||
p_rarch->runloop_paused = *ptr;
|
||||
}
|
||||
break;
|
||||
case RARCH_CTL_IS_PAUSED:
|
||||
return runloop_paused;
|
||||
return p_rarch->runloop_paused;
|
||||
case RARCH_CTL_SET_SHUTDOWN:
|
||||
runloop_shutdown_initiated = true;
|
||||
p_rarch->runloop_shutdown_initiated = true;
|
||||
break;
|
||||
case RARCH_CTL_CORE_OPTION_PREV:
|
||||
/*
|
||||
@ -27810,6 +27835,7 @@ static void retroarch_fail(int error_code, const char *error)
|
||||
|
||||
bool retroarch_main_quit(void)
|
||||
{
|
||||
struct rarch_state *p_rarch = &rarch_st;
|
||||
#ifdef HAVE_DISCORD
|
||||
if (discord_is_inited)
|
||||
{
|
||||
@ -27822,7 +27848,7 @@ bool retroarch_main_quit(void)
|
||||
discord_is_inited = false;
|
||||
#endif
|
||||
|
||||
if (!runloop_shutdown_initiated)
|
||||
if (!p_rarch->runloop_shutdown_initiated)
|
||||
{
|
||||
command_event_save_auto_state();
|
||||
#ifdef HAVE_CONFIGFILE
|
||||
@ -27842,7 +27868,7 @@ bool retroarch_main_quit(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
runloop_shutdown_initiated = true;
|
||||
p_rarch->runloop_shutdown_initiated = true;
|
||||
retroarch_menu_running_finished(true);
|
||||
|
||||
return true;
|
||||
@ -27897,10 +27923,11 @@ void runloop_msg_queue_push(const char *msg,
|
||||
void runloop_get_status(bool *is_paused, bool *is_idle,
|
||||
bool *is_slowmotion, bool *is_perfcnt_enable)
|
||||
{
|
||||
*is_paused = runloop_paused;
|
||||
*is_idle = runloop_idle;
|
||||
*is_slowmotion = runloop_slowmotion;
|
||||
*is_perfcnt_enable = runloop_perfcnt_enable;
|
||||
struct rarch_state *p_rarch = &rarch_st;
|
||||
*is_paused = p_rarch->runloop_paused;
|
||||
*is_idle = p_rarch->runloop_idle;
|
||||
*is_slowmotion = p_rarch->runloop_slowmotion;
|
||||
*is_perfcnt_enable = p_rarch->runloop_perfcnt_enable;
|
||||
}
|
||||
|
||||
#ifdef HAVE_MENU
|
||||
@ -28012,6 +28039,7 @@ static bool menu_display_libretro_running(void)
|
||||
/* Display the libretro core's framebuffer onscreen. */
|
||||
static bool menu_display_libretro(retro_time_t current_time)
|
||||
{
|
||||
struct rarch_state *p_rarch = &rarch_st;
|
||||
if (video_driver_poke && video_driver_poke->set_texture_enable)
|
||||
video_driver_poke->set_texture_enable(video_driver_data,
|
||||
true, false);
|
||||
@ -28028,7 +28056,7 @@ static bool menu_display_libretro(retro_time_t current_time)
|
||||
return true;
|
||||
}
|
||||
|
||||
if (runloop_idle)
|
||||
if (p_rarch->runloop_idle)
|
||||
{
|
||||
#ifdef HAVE_DISCORD
|
||||
discord_userdata_t userdata;
|
||||
@ -28065,8 +28093,11 @@ static void update_savestate_slot(void)
|
||||
/* Display the fast forward state to the user, if needed. */
|
||||
static void update_fastforwarding_state(void)
|
||||
{
|
||||
gfx_widgets_fast_forward = runloop_fastmotion;
|
||||
if (!runloop_fastmotion)
|
||||
struct rarch_state *p_rarch = &rarch_st;
|
||||
|
||||
gfx_widgets_fast_forward = p_rarch->runloop_fastmotion;
|
||||
|
||||
if (!p_rarch->runloop_fastmotion)
|
||||
{
|
||||
settings_t *settings = configuration_settings;
|
||||
if (settings->bools.frame_time_counter_reset_after_fastforwarding)
|
||||
@ -28225,7 +28256,7 @@ static enum runloop_state runloop_check_state(retro_time_t current_time)
|
||||
if (input_active || (input_driver_flushing_input > 0))
|
||||
{
|
||||
BIT256_CLEAR_ALL(current_bits);
|
||||
if (runloop_paused)
|
||||
if (p_rarch->runloop_paused)
|
||||
BIT256_SET(current_bits, RARCH_PAUSE_TOGGLE);
|
||||
}
|
||||
}
|
||||
@ -28250,7 +28281,7 @@ static enum runloop_state runloop_check_state(retro_time_t current_time)
|
||||
|
||||
/* Check fullscreen toggle */
|
||||
{
|
||||
bool fullscreen_toggled = !runloop_paused
|
||||
bool fullscreen_toggled = !p_rarch->runloop_paused
|
||||
#ifdef HAVE_MENU
|
||||
|| menu_is_alive;
|
||||
#else
|
||||
@ -28367,7 +28398,7 @@ static enum runloop_state runloop_check_state(retro_time_t current_time)
|
||||
if (runloop_exec)
|
||||
runloop_exec = false;
|
||||
|
||||
if (runloop_core_shutdown_initiated &&
|
||||
if (p_rarch->runloop_core_shutdown_initiated &&
|
||||
settings->bools.load_dummy_on_core_shutdown)
|
||||
{
|
||||
content_ctx_info_t content_info;
|
||||
@ -28381,8 +28412,8 @@ static enum runloop_state runloop_check_state(retro_time_t current_time)
|
||||
{
|
||||
/* Loads dummy core instead of exiting RetroArch completely.
|
||||
* Aborts core shutdown if invoked. */
|
||||
runloop_shutdown_initiated = false;
|
||||
runloop_core_shutdown_initiated = false;
|
||||
p_rarch->runloop_shutdown_initiated = false;
|
||||
p_rarch->runloop_core_shutdown_initiated = false;
|
||||
}
|
||||
else
|
||||
quit_runloop = true;
|
||||
@ -28390,7 +28421,7 @@ static enum runloop_state runloop_check_state(retro_time_t current_time)
|
||||
else
|
||||
quit_runloop = true;
|
||||
|
||||
runloop_core_running = false;
|
||||
p_rarch->runloop_core_running = false;
|
||||
|
||||
if (quit_runloop)
|
||||
{
|
||||
@ -28491,7 +28522,7 @@ static enum runloop_state runloop_check_state(retro_time_t current_time)
|
||||
if (!menu_driver_iterate(&iter, current_time))
|
||||
retroarch_menu_running_finished(false);
|
||||
|
||||
if (focused || !runloop_idle)
|
||||
if (focused || !p_rarch->runloop_idle)
|
||||
{
|
||||
bool libretro_running = menu_display_libretro_running();
|
||||
menu_handle_t *menu_data = menu_driver_get_ptr();
|
||||
@ -28527,10 +28558,10 @@ static enum runloop_state runloop_check_state(retro_time_t current_time)
|
||||
menu_data->userdata,
|
||||
video_driver_width,
|
||||
video_driver_height,
|
||||
runloop_idle);
|
||||
p_rarch->runloop_idle);
|
||||
}
|
||||
|
||||
if (menu_driver_alive && !runloop_idle)
|
||||
if (menu_driver_alive && !p_rarch->runloop_idle)
|
||||
menu_display_libretro(current_time);
|
||||
|
||||
if (menu_data->driver_ctx->set_texture)
|
||||
@ -28547,14 +28578,14 @@ static enum runloop_state runloop_check_state(retro_time_t current_time)
|
||||
old_input = current_bits;
|
||||
old_action = action;
|
||||
|
||||
if (!focused || runloop_idle)
|
||||
if (!focused || p_rarch->runloop_idle)
|
||||
return RUNLOOP_STATE_POLLED_AND_SLEEP;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
#endif
|
||||
{
|
||||
if (runloop_idle)
|
||||
if (p_rarch->runloop_idle)
|
||||
{
|
||||
retro_ctx.poll_cb();
|
||||
return RUNLOOP_STATE_POLLED_AND_SLEEP;
|
||||
@ -28667,7 +28698,8 @@ static enum runloop_state runloop_check_state(retro_time_t current_time)
|
||||
* unpause the libretro core. */
|
||||
|
||||
/* FRAMEADVANCE will set us into pause mode. */
|
||||
pause_pressed |= !runloop_paused && trig_frameadvance;
|
||||
pause_pressed |= !p_rarch->runloop_paused
|
||||
&& trig_frameadvance;
|
||||
|
||||
if (focused && pause_pressed && !old_pause_pressed)
|
||||
command_event(CMD_EVENT_PAUSE_TOGGLE, NULL);
|
||||
@ -28680,9 +28712,9 @@ static enum runloop_state runloop_check_state(retro_time_t current_time)
|
||||
old_pause_pressed = pause_pressed;
|
||||
old_frameadvance = frameadvance_pressed;
|
||||
|
||||
if (runloop_paused)
|
||||
if (p_rarch->runloop_paused)
|
||||
{
|
||||
bool toggle = !runloop_idle ? true : false;
|
||||
bool toggle = !p_rarch->runloop_idle ? true : false;
|
||||
|
||||
HOTKEY_CHECK(RARCH_FULLSCREEN_TOGGLE_KEY,
|
||||
CMD_EVENT_FULLSCREEN_TOGGLE, true, &toggle);
|
||||
@ -28753,13 +28785,13 @@ static enum runloop_state runloop_check_state(retro_time_t current_time)
|
||||
if (check1)
|
||||
{
|
||||
input_driver_nonblock_state = false;
|
||||
runloop_fastmotion = false;
|
||||
p_rarch->runloop_fastmotion = false;
|
||||
fastforward_after_frames = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
input_driver_nonblock_state = true;
|
||||
runloop_fastmotion = true;
|
||||
p_rarch->runloop_fastmotion = true;
|
||||
}
|
||||
driver_set_nonblock_state();
|
||||
#if defined(HAVE_GFX_WIDGETS)
|
||||
@ -28774,9 +28806,9 @@ static enum runloop_state runloop_check_state(retro_time_t current_time)
|
||||
/* Show the fast-forward OSD for 1 frame every frame if
|
||||
* display widgets are disabled */
|
||||
#if defined(HAVE_GFX_WIDGETS)
|
||||
if (!widgets_active && runloop_fastmotion)
|
||||
if (!widgets_active && p_rarch->runloop_fastmotion)
|
||||
#else
|
||||
if (runloop_fastmotion)
|
||||
if (p_rarch->runloop_fastmotion)
|
||||
#endif
|
||||
{
|
||||
runloop_msg_queue_push(
|
||||
@ -28846,7 +28878,8 @@ static enum runloop_state runloop_check_state(retro_time_t current_time)
|
||||
rewinding = state_manager_check_rewind(
|
||||
BIT256_GET(current_bits, RARCH_REWIND),
|
||||
settings->uints.rewind_granularity,
|
||||
runloop_paused, s, sizeof(s), &t);
|
||||
p_rarch->runloop_paused,
|
||||
s, sizeof(s), &t);
|
||||
|
||||
#if defined(HAVE_GFX_WIDGETS)
|
||||
if (widgets_active)
|
||||
@ -28873,14 +28906,14 @@ static enum runloop_state runloop_check_state(retro_time_t current_time)
|
||||
current_bits, RARCH_SLOWMOTION_HOLD_KEY);
|
||||
|
||||
if (new_slowmotion_button_state && !old_slowmotion_button_state)
|
||||
runloop_slowmotion = !runloop_slowmotion;
|
||||
p_rarch->runloop_slowmotion = !p_rarch->runloop_slowmotion;
|
||||
else if (old_slowmotion_hold_button_state != new_slowmotion_hold_button_state)
|
||||
runloop_slowmotion = new_slowmotion_hold_button_state;
|
||||
p_rarch->runloop_slowmotion = new_slowmotion_hold_button_state;
|
||||
|
||||
if (runloop_slowmotion)
|
||||
if (p_rarch->runloop_slowmotion)
|
||||
{
|
||||
if (settings->bools.video_black_frame_insertion)
|
||||
if (!runloop_idle)
|
||||
if (!p_rarch->runloop_idle)
|
||||
video_driver_cached_frame();
|
||||
|
||||
#if defined(HAVE_GFX_WIDGETS)
|
||||
@ -28999,6 +29032,7 @@ int runloop_iterate(void)
|
||||
{
|
||||
unsigned i;
|
||||
settings_t *settings = configuration_settings;
|
||||
struct rarch_state *p_rarch = &rarch_st;
|
||||
float fastforward_ratio = settings->floats.fastforward_ratio;
|
||||
unsigned video_frame_delay = settings->uints.video_frame_delay;
|
||||
bool vrr_runloop_enable = settings->bools.vrr_runloop_enable;
|
||||
@ -29016,8 +29050,9 @@ int runloop_iterate(void)
|
||||
* Limits frame time if fast forward ratio throttle is enabled. */
|
||||
retro_usec_t runloop_last_frame_time = runloop_frame_time_last;
|
||||
retro_time_t current = current_time;
|
||||
bool is_locked_fps = (runloop_paused || input_driver_nonblock_state)
|
||||
| !!recording_data;
|
||||
bool is_locked_fps = (p_rarch->runloop_paused
|
||||
|| input_driver_nonblock_state)
|
||||
| !!recording_data;
|
||||
retro_time_t delta = (!runloop_last_frame_time || is_locked_fps) ?
|
||||
runloop_frame_time.reference
|
||||
: (current - runloop_last_frame_time);
|
||||
@ -29030,7 +29065,7 @@ int runloop_iterate(void)
|
||||
|
||||
runloop_frame_time_last = current;
|
||||
|
||||
if (runloop_slowmotion)
|
||||
if (p_rarch->runloop_slowmotion)
|
||||
delta /= slowmotion_ratio;
|
||||
}
|
||||
|
||||
@ -29041,7 +29076,7 @@ int runloop_iterate(void)
|
||||
{
|
||||
case RUNLOOP_STATE_QUIT:
|
||||
frame_limit_last_time = 0.0;
|
||||
runloop_core_running = false;
|
||||
p_rarch->runloop_core_running = false;
|
||||
command_event(CMD_EVENT_QUIT, NULL);
|
||||
return -1;
|
||||
case RUNLOOP_STATE_POLLED_AND_SLEEP:
|
||||
@ -29070,7 +29105,7 @@ int runloop_iterate(void)
|
||||
#endif
|
||||
return 0;
|
||||
case RUNLOOP_STATE_ITERATE:
|
||||
runloop_core_running = true;
|
||||
p_rarch->runloop_core_running = true;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -29203,12 +29238,13 @@ end:
|
||||
}
|
||||
|
||||
/* Fast Forward for max speed x0.0 */
|
||||
if (!fastforward_ratio && runloop_fastmotion)
|
||||
if (!fastforward_ratio && p_rarch->runloop_fastmotion)
|
||||
return 0;
|
||||
|
||||
frame_limit_minimum_time =
|
||||
(retro_time_t)roundf(1000000.0f / (av_info->timing.fps *
|
||||
(runloop_fastmotion ? fastforward_ratio : 1.0f)));
|
||||
(p_rarch->runloop_fastmotion
|
||||
? fastforward_ratio : 1.0f)));
|
||||
}
|
||||
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user