mirror of
https://github.com/libretro/RetroArch
synced 2025-04-02 07:20:34 +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;
|
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)
|
if (!ol)
|
||||||
return false;
|
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))
|
if (!input_overlay_resolve_targets(ol->overlays, ol->pos, ol->size))
|
||||||
{
|
return false;
|
||||||
RARCH_ERR("[Overlay]: Failed to resolve next targets.\n");
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
ol->pos += 1;
|
|
||||||
|
|
||||||
return true;
|
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)
|
if (!not_done)
|
||||||
{
|
{
|
||||||
ol->pos = 0;
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -539,8 +521,17 @@ bool input_overlay_load_overlays_iterate(input_overlay_t *ol)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case OVERLAY_IMAGE_TRANSFER_DESC_DONE:
|
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->pos += 1;
|
||||||
ol->loading_status = OVERLAY_IMAGE_TRANSFER_NONE;
|
|
||||||
break;
|
break;
|
||||||
case OVERLAY_IMAGE_TRANSFER_ERROR:
|
case OVERLAY_IMAGE_TRANSFER_ERROR:
|
||||||
goto error;
|
goto error;
|
||||||
|
@ -75,7 +75,6 @@ enum overlay_status
|
|||||||
OVERLAY_STATUS_DEFERRED_LOADING_IMAGE,
|
OVERLAY_STATUS_DEFERRED_LOADING_IMAGE,
|
||||||
OVERLAY_STATUS_DEFERRED_LOADING_IMAGE_PROCESS,
|
OVERLAY_STATUS_DEFERRED_LOADING_IMAGE_PROCESS,
|
||||||
OVERLAY_STATUS_DEFERRED_LOADING,
|
OVERLAY_STATUS_DEFERRED_LOADING,
|
||||||
OVERLAY_STATUS_DEFERRED_LOADING_RESOLVE,
|
|
||||||
OVERLAY_STATUS_DEFERRED_DONE,
|
OVERLAY_STATUS_DEFERRED_DONE,
|
||||||
OVERLAY_STATUS_DEFERRED_ERROR,
|
OVERLAY_STATUS_DEFERRED_ERROR,
|
||||||
OVERLAY_STATUS_ALIVE,
|
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_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);
|
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:
|
case OVERLAY_STATUS_DEFERRED_LOADING:
|
||||||
input_overlay_load_overlays_iterate(driver.overlay);
|
input_overlay_load_overlays_iterate(driver.overlay);
|
||||||
break;
|
break;
|
||||||
case OVERLAY_STATUS_DEFERRED_LOADING_RESOLVE:
|
|
||||||
input_overlay_load_overlays_resolve_iterate(driver.overlay);
|
|
||||||
break;
|
|
||||||
case OVERLAY_STATUS_DEFERRED_DONE:
|
case OVERLAY_STATUS_DEFERRED_DONE:
|
||||||
input_overlay_new_done(driver.overlay);
|
|
||||||
break;
|
break;
|
||||||
case OVERLAY_STATUS_DEFERRED_ERROR:
|
case OVERLAY_STATUS_DEFERRED_ERROR:
|
||||||
input_overlay_free(driver.overlay);
|
input_overlay_free(driver.overlay);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user