diff --git a/input/input_overlay.c b/input/input_overlay.c index 79d7ac51ec..1aa206d35a 100644 --- a/input/input_overlay.c +++ b/input/input_overlay.c @@ -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; diff --git a/input/input_overlay.h b/input/input_overlay.h index 4dfbca8bb2..b7a1ee6ccd 100644 --- a/input/input_overlay.h +++ b/input/input_overlay.h @@ -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); /** diff --git a/runloop.c b/runloop.c index d0f4020ad3..9479a949a8 100644 --- a/runloop.c +++ b/runloop.c @@ -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);