mirror of
https://github.com/libretro/RetroArch
synced 2025-03-30 16:20:27 +00:00
Load first active overlay immediately - much faster
This commit is contained in:
parent
a372d78e53
commit
a41c159ece
@ -451,34 +451,15 @@ static bool input_overlay_resolve_targets(struct overlay *ol,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool input_overlay_load_overlays_resolve_iterate(input_overlay_t *ol)
|
||||
static bool input_overlay_load_overlays_resolve_iterate(input_overlay_t *ol)
|
||||
{
|
||||
bool not_done = true;
|
||||
|
||||
if (!ol)
|
||||
return false;
|
||||
|
||||
not_done = ol->pos < ol->size;
|
||||
|
||||
if (!not_done)
|
||||
{
|
||||
ol->state = OVERLAY_STATUS_DEFERRED_DONE;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!input_overlay_resolve_targets(ol->overlays, ol->pos, ol->size))
|
||||
{
|
||||
RARCH_ERR("[Overlay]: Failed to resolve next targets.\n");
|
||||
goto error;
|
||||
}
|
||||
|
||||
ol->pos += 1;
|
||||
return false;
|
||||
|
||||
return true;
|
||||
error:
|
||||
ol->state = OVERLAY_STATUS_DEFERRED_ERROR;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@ -511,7 +492,8 @@ bool input_overlay_load_overlays_iterate(input_overlay_t *ol)
|
||||
if (!not_done)
|
||||
{
|
||||
ol->pos = 0;
|
||||
ol->state = OVERLAY_STATUS_DEFERRED_LOADING_RESOLVE;
|
||||
ol->state = OVERLAY_STATUS_DEFERRED_DONE;
|
||||
ol->loading_status = OVERLAY_IMAGE_TRANSFER_NONE;
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -539,8 +521,17 @@ bool input_overlay_load_overlays_iterate(input_overlay_t *ol)
|
||||
}
|
||||
break;
|
||||
case OVERLAY_IMAGE_TRANSFER_DESC_DONE:
|
||||
if (!input_overlay_load_overlays_resolve_iterate(ol))
|
||||
{
|
||||
RARCH_ERR("[Overlay]: Failed to resolve next targets.\n");
|
||||
goto error;
|
||||
}
|
||||
if (ol->pos == 0)
|
||||
{
|
||||
/* First active overlay, load already. */
|
||||
input_overlay_new_done(driver.overlay);
|
||||
}
|
||||
ol->pos += 1;
|
||||
ol->loading_status = OVERLAY_IMAGE_TRANSFER_NONE;
|
||||
break;
|
||||
case OVERLAY_IMAGE_TRANSFER_ERROR:
|
||||
goto error;
|
||||
|
@ -75,7 +75,6 @@ enum overlay_status
|
||||
OVERLAY_STATUS_DEFERRED_LOADING_IMAGE,
|
||||
OVERLAY_STATUS_DEFERRED_LOADING_IMAGE_PROCESS,
|
||||
OVERLAY_STATUS_DEFERRED_LOADING,
|
||||
OVERLAY_STATUS_DEFERRED_LOADING_RESOLVE,
|
||||
OVERLAY_STATUS_DEFERRED_DONE,
|
||||
OVERLAY_STATUS_DEFERRED_ERROR,
|
||||
OVERLAY_STATUS_ALIVE,
|
||||
@ -238,8 +237,6 @@ bool input_overlay_load_overlays_image_iterate(input_overlay_t *ol);
|
||||
|
||||
bool input_overlay_load_overlays_iterate(input_overlay_t *ol);
|
||||
|
||||
bool input_overlay_load_overlays_resolve_iterate(input_overlay_t *ol);
|
||||
|
||||
bool input_overlay_new_done(input_overlay_t *ol);
|
||||
|
||||
/**
|
||||
|
@ -888,11 +888,7 @@ void rarch_main_iterate_overlay_state(void)
|
||||
case OVERLAY_STATUS_DEFERRED_LOADING:
|
||||
input_overlay_load_overlays_iterate(driver.overlay);
|
||||
break;
|
||||
case OVERLAY_STATUS_DEFERRED_LOADING_RESOLVE:
|
||||
input_overlay_load_overlays_resolve_iterate(driver.overlay);
|
||||
break;
|
||||
case OVERLAY_STATUS_DEFERRED_DONE:
|
||||
input_overlay_new_done(driver.overlay);
|
||||
break;
|
||||
case OVERLAY_STATUS_DEFERRED_ERROR:
|
||||
input_overlay_free(driver.overlay);
|
||||
|
Loading…
x
Reference in New Issue
Block a user