Exemplo n.º 1
0
static void rarch_main_data_overlay_iterate(void)
{
   if (g_runloop.is_idle)
      return;
   if (!driver.overlay)
      return;

   switch (driver.overlay->state)
   {
      case OVERLAY_STATUS_NONE:
      case OVERLAY_STATUS_ALIVE:
         break;
      case OVERLAY_STATUS_DEFERRED_LOAD:
         input_overlay_load_overlays(driver.overlay);
         break;
      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);
         break;
      default:
         break;
   }
}
Exemplo n.º 2
0
void rarch_main_iterate_overlay_state(void)
{
    switch (driver.overlay->state)
    {
    case OVERLAY_STATUS_NONE:
    case OVERLAY_STATUS_ALIVE:
        break;
    case OVERLAY_STATUS_DEFERRED_LOAD:
        input_overlay_load_overlays(driver.overlay);
        break;
    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);
        break;
    default:
        break;
    }
}
Exemplo n.º 3
0
void rarch_main_data_overlay_iterate(bool is_thread)
{
#ifdef HAVE_THREADS
   if (is_thread)
      slock_lock(overlay_lock);
#endif

   switch (input_overlay_status())
   {
      case OVERLAY_STATUS_DEFERRED_LOAD:
         input_overlay_load_overlays();
         break;
      case OVERLAY_STATUS_DEFERRED_LOADING_RESOLVE:
         input_overlay_load_overlays_resolve_iterate();
         break;
      case OVERLAY_STATUS_DEFERRED_DONE:
         input_overlay_new_done();
         break;
      case OVERLAY_STATUS_DEFERRED_ERROR:
         input_overlay_free();
         break;
      default:
      case OVERLAY_STATUS_NONE:
         break;
   }

#ifdef HAVE_THREADS
   if (is_thread)
      slock_unlock(overlay_lock);
#endif
}
Exemplo n.º 4
0
bool input_overlay_load_overlays_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_LOADING_RESOLVE;
      return true;
   }

   switch (ol->loading_status)
   {
      case OVERLAY_IMAGE_TRANSFER_NONE:
      case OVERLAY_IMAGE_TRANSFER_BUSY:
         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:
         if (ol->pos == 0)
            input_overlay_load_overlays_resolve_iterate(ol);
         ol->pos += 1;
         ol->loading_status = OVERLAY_IMAGE_TRANSFER_NONE;
         break;
      case OVERLAY_IMAGE_TRANSFER_ERROR:
         goto error;
   }

   return true;
error:
   ol->state = OVERLAY_STATUS_DEFERRED_ERROR;

   return false;
}