Implement RARCH_MAIN_CTL_IS_IDLE

This commit is contained in:
twinaphex 2015-11-28 15:03:59 +01:00
parent 3433a515d1
commit 2b4464f30a
5 changed files with 10 additions and 28 deletions

View File

@ -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. */

View File

@ -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();

View File

@ -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))

View File

@ -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;

View File

@ -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());
}