Load first active overlay immediately - much faster

This commit is contained in:
twinaphex 2015-02-23 21:49:08 +01:00
parent a372d78e53
commit a41c159ece
3 changed files with 14 additions and 30 deletions

View File

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

View File

@ -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);
/**

View File

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