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; }
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; }
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; }