mirror of
https://github.com/CTCaer/RetroArch.git
synced 2024-12-22 10:49:02 +00:00
Add OVERLAY_IMAGE_TRANSFER_DESC_ITERATE and OVERLAY_IMAGE_TRANSFER_DESC_DONE
This commit is contained in:
parent
d44ebefd49
commit
89685c5709
@ -364,32 +364,31 @@ static bool input_overlay_load_overlay(input_overlay_t *ol,
|
||||
struct overlay *overlay, unsigned idx)
|
||||
{
|
||||
size_t i;
|
||||
bool not_done = overlay->pos < overlay->size;
|
||||
|
||||
for (i = 0; i < overlay->size; i++)
|
||||
if (!not_done)
|
||||
{
|
||||
if (!input_overlay_load_desc(ol, &overlay->descs[i], idx, i,
|
||||
overlay->pos = 0;
|
||||
ol->loading_status = OVERLAY_IMAGE_TRANSFER_DESC_DONE;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!input_overlay_load_desc(ol, &overlay->descs[overlay->pos], idx, overlay->pos,
|
||||
overlay->image.width, overlay->image.height,
|
||||
overlay->config.normalized,
|
||||
overlay->config.alpha_mod, overlay->config.range_mod))
|
||||
{
|
||||
RARCH_ERR("[Overlay]: Failed to load overlay descs for overlay #%u.\n",
|
||||
(unsigned)i);
|
||||
(unsigned)overlay->pos);
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
|
||||
if (overlay->image.pixels)
|
||||
overlay->load_images[overlay->load_images_size++] = overlay->image;
|
||||
|
||||
for (i = 0; i < overlay->size; i++)
|
||||
if (overlay->descs[overlay->pos].image.pixels)
|
||||
{
|
||||
if (!overlay->descs[i].image.pixels)
|
||||
continue;
|
||||
|
||||
overlay->descs[i].image_index = overlay->load_images_size;
|
||||
overlay->load_images[overlay->load_images_size++] = overlay->descs[i].image;
|
||||
overlay->descs[overlay->pos].image_index = overlay->load_images_size;
|
||||
overlay->load_images[overlay->load_images_size++] = overlay->descs[overlay->pos].image;
|
||||
}
|
||||
|
||||
overlay->pos++;
|
||||
|
||||
return true;
|
||||
|
||||
@ -479,6 +478,16 @@ error:
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
static bool input_overlay_load_overlay_image_done(struct overlay *overlay)
|
||||
{
|
||||
if (overlay->image.pixels)
|
||||
overlay->load_images[overlay->load_images_size++] = overlay->image;
|
||||
overlay->pos = 0;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool input_overlay_load_overlays_iterate(input_overlay_t *ol)
|
||||
{
|
||||
bool not_done = true;
|
||||
@ -507,13 +516,18 @@ bool input_overlay_load_overlays_iterate(input_overlay_t *ol)
|
||||
ol->loading_status = OVERLAY_IMAGE_TRANSFER_DONE;
|
||||
break;
|
||||
case OVERLAY_IMAGE_TRANSFER_DONE:
|
||||
input_overlay_load_overlay_image_done(&ol->overlays[ol->pos]);
|
||||
ol->loading_status = OVERLAY_IMAGE_TRANSFER_DESC_ITERATE;
|
||||
break;
|
||||
case OVERLAY_IMAGE_TRANSFER_DESC_ITERATE:
|
||||
if (!input_overlay_load_overlay(ol,
|
||||
ol->overlay_path, &ol->overlays[ol->pos], ol->pos))
|
||||
{
|
||||
RARCH_ERR("[Overlay]: Failed to load overlay #%u.\n", (unsigned)ol->pos);
|
||||
goto error;
|
||||
}
|
||||
|
||||
break;
|
||||
case OVERLAY_IMAGE_TRANSFER_DESC_DONE:
|
||||
ol->pos += 1;
|
||||
ol->loading_status = OVERLAY_IMAGE_TRANSFER_NONE;
|
||||
break;
|
||||
|
@ -86,6 +86,8 @@ enum overlay_image_transfer_status
|
||||
OVERLAY_IMAGE_TRANSFER_NONE = 0,
|
||||
OVERLAY_IMAGE_TRANSFER_BUSY,
|
||||
OVERLAY_IMAGE_TRANSFER_DONE,
|
||||
OVERLAY_IMAGE_TRANSFER_DESC_ITERATE,
|
||||
OVERLAY_IMAGE_TRANSFER_DESC_DONE,
|
||||
OVERLAY_IMAGE_TRANSFER_ERROR,
|
||||
};
|
||||
|
||||
@ -121,6 +123,7 @@ struct overlay
|
||||
{
|
||||
struct overlay_desc *descs;
|
||||
size_t size;
|
||||
size_t pos;
|
||||
|
||||
struct texture_image image;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user