/**
 * find_prev_context_driver:
 *
 * Finds previous driver in graphics context driver array.
 **/
void find_prev_gfx_context_driver(void)
{
   int i = find_gfx_ctx_driver_index(g_settings.video.context_driver);
   
   if (i > 0)
   {
      strlcpy(g_settings.video.context_driver, gfx_ctx_drivers[i - 1]->ident,
            sizeof(g_settings.video.context_driver));
   }
   else
      RARCH_WARN("Couldn't find any previous video context driver.\n");
}
/**
 * find_next_context_driver:
 *
 * Finds next driver in graphics context driver array.
 **/
void find_next_context_driver(void)
{
   int i = find_gfx_ctx_driver_index(g_settings.video.context_driver);

   if (i >= 0 && gfx_ctx_drivers[i + 1])
   {
      strlcpy(g_settings.video.context_driver, gfx_ctx_drivers[i + 1]->ident,
            sizeof(g_settings.video.context_driver));
   }
   else
      RARCH_WARN("Couldn't find any next video context driver.\n");
}
/**
 * find_next_context_driver:
 *
 * Finds next driver in graphics context driver array.
 **/
void find_next_context_driver(void)
{
   settings_t *settings = config_get_ptr();
   int i = find_gfx_ctx_driver_index(settings->video.context_driver);

   if (i >= 0 && gfx_ctx_drivers[i + 1])
   {
      strlcpy(settings->video.context_driver, gfx_ctx_drivers[i + 1]->ident,
            sizeof(settings->video.context_driver));
   }
   else
      RARCH_WARN("Couldn't find any next video context driver.\n");
}
/**
 * find_prev_context_driver:
 *
 * Finds previous driver in graphics context driver array.
 **/
static bool gfx_ctl_find_prev_driver(void)
{
   settings_t *settings = config_get_ptr();
   int                i = find_gfx_ctx_driver_index(
         settings->video.context_driver);
   
   if (i > 0)
   {
      strlcpy(settings->video.context_driver,
            gfx_ctx_drivers[i - 1]->ident,
            sizeof(settings->video.context_driver));
      return true;
   }

   RARCH_WARN("Couldn't find any previous video context driver.\n");
   return false;
}
/**
 * gfx_ctx_find_driver:
 * @data                    : Input data.
 * @ident                   : Identifier of graphics context driver to find.
 * @api                     : API of higher-level graphics API.
 * @major                   : Major version number of higher-level graphics API.
 * @minor                   : Minor version number of higher-level graphics API.
 * @hw_render_ctx           : Request a graphics context driver capable of
 *                            hardware rendering?
 *
 * Finds graphics context driver and initializes.
 *
 * Returns: graphics context driver if found, otherwise NULL.
 **/
static const gfx_ctx_driver_t *gfx_ctx_find_driver(void *data,
      const char *ident,
      enum gfx_ctx_api api, unsigned major,
      unsigned minor, bool hw_render_ctx)
{
   const gfx_ctx_driver_t *ctx = NULL;
   int i = find_gfx_ctx_driver_index(ident);

   if (i >= 0)
      return gfx_ctx_init(data, gfx_ctx_drivers[i], ident,
            api, major, minor, hw_render_ctx);

   for (i = 0; gfx_ctx_drivers[i]; i++)
   {
      ctx = gfx_ctx_init(data, gfx_ctx_drivers[i], ident,
            api, major, minor, hw_render_ctx);
      if (ctx)
         return ctx;
   }

   return NULL;
}