Example #1
0
static void *d3d_init(const video_info_t *info,
      const input_driver_t **input, void **input_data)
{
   d3d_video_t *vid = NULL;
   driver_t *driver = driver_get_ptr();

#ifdef _XBOX
   if (driver->video_data)
   {
      d3d_video_t *vid = (d3d_video_t*)driver->video_data;

      /* Reinitialize renderchain as we 
       * might have changed pixel formats.*/
      if (vid->renderchain_driver->reinit(vid, (const void*)info))
      {
         d3d_deinit_chain(vid);
         d3d_init_chain(vid, info);

         if (input && input_data)
         {
            *input = driver->input;
            *input_data = driver->input_data;
         }

         driver->video_data_own = true;
         driver->input_data_own = true;
         return driver->video_data;
      }
   }
#endif

   vid = (d3d_video_t*)calloc(1, sizeof(*vid));
   if (!vid)
      goto error;

   vid->ctx_driver = d3d_get_context(vid);
   if (!vid->ctx_driver)
      goto error;

   /* Default values */
   vid->g_pD3D               = NULL;
   vid->dev                  = NULL;
   vid->dev_rotation         = 0;
   vid->needs_restore        = false;
#ifdef HAVE_OVERLAY
   vid->overlays_enabled     = false;
#endif
#ifdef _XBOX
   vid->should_resize        = false;
#else
   vid->menu                 = NULL;
#endif

   if (!d3d_construct(vid, info, input, input_data))
   {
      RARCH_ERR("[D3D]: Failed to init D3D.\n");
      goto error;
   }

#ifdef _XBOX
   driver->video_data_own = true;
   driver->input_data_own = true;
#endif

   return vid;

error:
   if (vid)
      free(vid);
   return NULL;
}
Example #2
0
static void *d3d_init(const video_info_t *info,
      const input_driver_t **input, void **input_data)
{
   d3d_video_t            *d3d        = NULL;
   const gfx_ctx_driver_t *ctx_driver = NULL;

#ifdef _XBOX
   if (video_driver_get_ptr(false))
   {
      d3d = (d3d_video_t*)video_driver_get_ptr(false);

      /* Reinitialize renderchain as we
       * might have changed pixel formats.*/
      if (d3d->renderchain_driver->reinit(d3d, (const void*)info))
      {
         d3d_deinit_chain(d3d);
         d3d_init_chain(d3d, info);

         input_driver_set(input, input_data);

         video_driver_ctl(RARCH_DISPLAY_CTL_SET_OWN_DRIVER, NULL);
         return d3d;
      }
   }
#endif

   d3d = new d3d_video_t();
   if (!d3d)
      goto error;

   ctx_driver = d3d_get_context(d3d);
   if (!ctx_driver)
      goto error;

   /* Default values */
   d3d->dev                  = NULL;
   d3d->dev_rotation         = 0;
   d3d->needs_restore        = false;
#ifdef HAVE_OVERLAY
   d3d->overlays_enabled     = false;
#endif
#ifdef _XBOX
   d3d->should_resize        = false;
#else
#ifdef HAVE_MENU
   d3d->menu                 = NULL;
#endif
#endif

   gfx_ctx_set(ctx_driver);

   if (!d3d_construct(d3d, info, input, input_data))
   {
      RARCH_ERR("[D3D]: Failed to init D3D.\n");
      goto error;
   }

   d3d->keep_aspect       = info->force_aspect;
#ifdef _XBOX
   video_driver_ctl(RARCH_DISPLAY_CTL_SET_OWN_DRIVER, NULL);
   video_driver_ctl(RARCH_INPUT_CTL_SET_OWN_DRIVER, NULL);
#endif

   return d3d;

error:
   gfx_ctx_destroy(ctx_driver);
   if (d3d)
      delete d3d;
   return NULL;
}
Example #3
0
static void *d3d_init(const video_info_t *info,
      const input_driver_t **input, void **input_data)
{
   d3d_video_t *vid = NULL;

#ifdef _XBOX
   if (driver.video_data)
   {
      d3d_video_t *vid = (d3d_video_t*)driver.video_data;

      /* Reinitialize renderchain as we 
       * might have changed pixel formats.*/
      d3d_reinit_renderchain(vid, info);

      if (input && input_data)
      {
         *input = driver.input;
         *input_data = driver.input_data;
      }

      driver.video_data_own = true;
      driver.input_data_own = true;
      return driver.video_data;
   }
#endif

   vid = new d3d_video_t();
   if (!vid)
      return NULL;

   vid->ctx_driver = d3d_get_context(vid);
   if (!vid->ctx_driver)
   {
      delete vid;
      return NULL;
   }

   /* Default values */
   vid->g_pD3D               = NULL;
   vid->dev                  = NULL;
   vid->dev_rotation         = 0;
   vid->needs_restore        = false;
#ifdef HAVE_CG
   vid->cgCtx                = NULL;
#endif
#ifdef HAVE_OVERLAY
   vid->overlays_enabled     = false;
#endif
#ifdef _XBOX
   vid->should_resize        = false;
#else
   vid->menu                 = NULL;
#endif

   if (!d3d_construct(vid, info, input, input_data))
   {
      RARCH_ERR("[D3D]: Failed to init D3D.\n");
      delete vid;
      return NULL;
   }

#ifdef _XBOX
   driver.video_data_own = true;
   driver.input_data_own = true;
#endif

   return vid;
}