mirror of
https://github.com/libretro/RetroArch
synced 2025-01-30 12:32:52 +00:00
Create rarch_main_iterate_quit
This commit is contained in:
parent
90a32b022d
commit
b53e8f6437
@ -59,19 +59,7 @@
|
||||
**/
|
||||
int main_entry_decide(signature(), args_type() args)
|
||||
{
|
||||
if (rarch_main_iterate() == 0)
|
||||
return 0;
|
||||
|
||||
if (g_extern.core_shutdown_initiated
|
||||
&& g_settings.load_dummy_on_core_shutdown)
|
||||
{
|
||||
/* Load dummy core instead of exiting RetroArch completely. */
|
||||
rarch_main_command(RARCH_CMD_PREPARE_DUMMY);
|
||||
g_extern.core_shutdown_initiated = false;
|
||||
return 0;
|
||||
}
|
||||
|
||||
return -1;
|
||||
return rarch_main_iterate();
|
||||
}
|
||||
|
||||
/**
|
||||
|
45
runloop.c
45
runloop.c
@ -834,12 +834,39 @@ static bool input_flush(retro_input_t *input)
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* rarch_main_load_dummy_core:
|
||||
*
|
||||
* Quits out of RetroArch main loop.
|
||||
*
|
||||
* On special case, loads dummy core
|
||||
* instead of exiting RetroArch completely.
|
||||
* Aborts core shutdown if invoked.
|
||||
*
|
||||
* Returns: -1 if we are about to quit, otherwise 0.
|
||||
**/
|
||||
static int rarch_main_iterate_quit(void)
|
||||
{
|
||||
if (g_extern.core_shutdown_initiated
|
||||
&& g_settings.load_dummy_on_core_shutdown)
|
||||
{
|
||||
if (!rarch_main_command(RARCH_CMD_PREPARE_DUMMY))
|
||||
return -1;
|
||||
|
||||
g_extern.core_shutdown_initiated = false;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* rarch_main_iterate:
|
||||
*
|
||||
* Run Libretro core in RetroArch for one frame.
|
||||
*
|
||||
* Returns: 0 on successful run, 1 if we have to wait until button input in order
|
||||
* Returns: 0 on success, 1 if we have to wait until button input in order
|
||||
* to wake up the loop, -1 if we forcibly quit out of the RetroArch iteration loop.
|
||||
**/
|
||||
int rarch_main_iterate(void)
|
||||
@ -850,7 +877,6 @@ int rarch_main_iterate(void)
|
||||
static retro_input_t last_input = 0;
|
||||
retro_input_t old_input = last_input;
|
||||
retro_input_t input = input_keys_pressed();
|
||||
|
||||
last_input = input;
|
||||
|
||||
if (driver.flushing_input)
|
||||
@ -859,7 +885,10 @@ int rarch_main_iterate(void)
|
||||
trigger_input = input & ~old_input;
|
||||
|
||||
if (time_to_exit(input))
|
||||
return -1;
|
||||
{
|
||||
ret = -1;
|
||||
goto quit;
|
||||
}
|
||||
|
||||
if (g_extern.system.frame_time.callback)
|
||||
update_frame_time();
|
||||
@ -881,7 +910,8 @@ int rarch_main_iterate(void)
|
||||
if (g_extern.exec)
|
||||
{
|
||||
g_extern.exec = false;
|
||||
return -1;
|
||||
ret = -1;
|
||||
goto quit;
|
||||
}
|
||||
|
||||
if (do_state_checks(input, old_input, trigger_input))
|
||||
@ -890,7 +920,8 @@ int rarch_main_iterate(void)
|
||||
driver.retro_ctx.poll_cb();
|
||||
rarch_sleep(10);
|
||||
|
||||
return 1;
|
||||
ret = 1;
|
||||
goto quit;
|
||||
}
|
||||
|
||||
#if defined(HAVE_THREADS)
|
||||
@ -952,5 +983,9 @@ success:
|
||||
if (g_settings.fastforward_ratio_throttle_enable)
|
||||
limit_frame_time();
|
||||
|
||||
quit:
|
||||
if (ret == -1)
|
||||
return rarch_main_iterate_quit();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user