mirror of
https://github.com/libretro/RetroArch.git
synced 2025-02-12 12:39:56 +00:00
Implement RARCH_MAIN_CTL_IS_IDLE
This commit is contained in:
parent
3433a515d1
commit
2b4464f30a
@ -1145,13 +1145,10 @@ void video_driver_set_pixel_format(enum retro_pixel_format fmt)
|
||||
**/
|
||||
static bool video_driver_cached_frame(void)
|
||||
{
|
||||
bool is_idle;
|
||||
driver_t *driver = driver_get_ptr();
|
||||
void *recording = driver ? driver->recording_data : NULL;
|
||||
|
||||
rarch_main_ctl(RARCH_MAIN_CTL_IS_IDLE, &is_idle);
|
||||
|
||||
if (is_idle)
|
||||
if (rarch_main_ctl(RARCH_MAIN_CTL_IS_IDLE, NULL))
|
||||
return true; /* Maybe return false here for indication of idleness? */
|
||||
|
||||
/* Cannot allow recording when pushing duped frames. */
|
||||
|
@ -329,7 +329,6 @@ end:
|
||||
|
||||
int menu_iterate_render(void)
|
||||
{
|
||||
bool is_idle;
|
||||
const menu_ctx_driver_t *driver = menu_ctx_driver_get_ptr();
|
||||
menu_handle_t *menu = menu_driver_get_ptr();
|
||||
|
||||
@ -362,9 +361,7 @@ int menu_iterate_render(void)
|
||||
driver->render();
|
||||
}
|
||||
|
||||
rarch_main_ctl(RARCH_MAIN_CTL_IS_IDLE, &is_idle);
|
||||
|
||||
if (menu_driver_alive() && !is_idle)
|
||||
if (menu_driver_alive() && !rarch_main_ctl(RARCH_MAIN_CTL_IS_IDLE, NULL))
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_LIBRETRO, NULL);
|
||||
|
||||
menu_driver_set_texture();
|
||||
|
@ -444,16 +444,12 @@ static void rgui_render(void)
|
||||
|
||||
if (!rgui->force_redraw)
|
||||
{
|
||||
bool is_idle;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_MSG_FORCE, &msg_force);
|
||||
|
||||
if (menu_entries_needs_refresh() && menu_driver_alive() && !msg_force)
|
||||
return;
|
||||
|
||||
rarch_main_ctl(RARCH_MAIN_CTL_IS_IDLE, &is_idle);
|
||||
|
||||
if (is_idle)
|
||||
if (rarch_main_ctl(RARCH_MAIN_CTL_IS_IDLE, NULL))
|
||||
return;
|
||||
|
||||
if (!menu_display_ctl(MENU_DISPLAY_CTL_UPDATE_PENDING, NULL))
|
||||
|
17
runloop.c
17
runloop.c
@ -605,13 +605,7 @@ bool rarch_main_ctl(enum rarch_main_ctl_state state, void *data)
|
||||
}
|
||||
break;
|
||||
case RARCH_MAIN_CTL_IS_IDLE:
|
||||
{
|
||||
bool *ptr = (bool*)data;
|
||||
if (!ptr)
|
||||
return false;
|
||||
*ptr = main_is_idle;
|
||||
}
|
||||
break;
|
||||
return main_is_idle;
|
||||
case RARCH_MAIN_CTL_SET_IDLE:
|
||||
{
|
||||
bool *ptr = (bool*)data;
|
||||
@ -930,14 +924,15 @@ int rarch_main_iterate(unsigned *sleep_ms)
|
||||
#ifdef HAVE_MENU
|
||||
if (menu_driver_alive())
|
||||
{
|
||||
bool focused = check_focus(settings) && !ui_companion_is_on_foreground();
|
||||
|
||||
if (menu_driver_iterate((enum menu_action)menu_input_frame_retropad(input, trigger_input)) == -1)
|
||||
rarch_ctl(RARCH_ACTION_STATE_MENU_RUNNING_FINISHED, NULL);
|
||||
|
||||
if (check_focus(settings) && !ui_companion_is_on_foreground())
|
||||
{
|
||||
if (focused)
|
||||
menu_iterate_render();
|
||||
}
|
||||
else
|
||||
|
||||
if (!focused)
|
||||
{
|
||||
*sleep_ms = 10;
|
||||
return 1;
|
||||
|
@ -70,7 +70,6 @@ static void ui_companion_cocoatouch_event_command(
|
||||
static void rarch_draw_observer(CFRunLoopObserverRef observer,
|
||||
CFRunLoopActivity activity, void *info)
|
||||
{
|
||||
bool is_idle;
|
||||
unsigned sleep_ms = 0;
|
||||
int ret = rarch_main_iterate(&sleep_ms);
|
||||
|
||||
@ -85,9 +84,7 @@ static void rarch_draw_observer(CFRunLoopObserverRef observer,
|
||||
return;
|
||||
}
|
||||
|
||||
rarch_main_ctl(RARCH_MAIN_CTL_IS_IDLE, &is_idle);
|
||||
|
||||
if (is_idle)
|
||||
if (rarch_main_ctl(RARCH_MAIN_CTL_IS_IDLE, NULL))
|
||||
return;
|
||||
CFRunLoopWakeUp(CFRunLoopGetMain());
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user