# HG changeset patch # User Sam Lantinga # Date 1380402425 25200 # Node ID fc802d7071369416fa120ae4e38b339bbc502df2 # Parent 51abf766430443e7b9fa0a5f405bbf9c4591db8c Added platform specific call: SDL_RenderGetD3DDevice() diff -r 51abf7664304 -r fc802d707136 include/SDL_system.h --- a/include/SDL_system.h Sat Sep 28 14:06:59 2013 -0700 +++ b/include/SDL_system.h Sat Sep 28 14:07:05 2013 -0700 @@ -29,11 +29,9 @@ #define _SDL_system_h #include "SDL_stdinc.h" - -#if defined(__IPHONEOS__) && __IPHONEOS__ +#include "SDL_keyboard.h" +#include "SDL_render.h" #include "SDL_video.h" -#include "SDL_keyboard.h" -#endif #include "begin_code.h" /* Set up for C function definitions, even when using C++ */ @@ -51,6 +49,10 @@ */ extern DECLSPEC int SDLCALL SDL_Direct3D9GetAdapterIndex( int displayIndex ); +/* Returns the D3D device associated with a renderer, or NULL if it's not a D3D renderer. */ +typedef struct IDirect3DDevice9 IDirect3DDevice9; +extern DECLSPEC IDirect3DDevice9* SDLCALL SDL_RenderGetD3DDevice(SDL_Renderer * renderer); + #endif /* __WIN32__ */ diff -r 51abf7664304 -r fc802d707136 src/render/direct3d/SDL_render_d3d.c --- a/src/render/direct3d/SDL_render_d3d.c Sat Sep 28 14:06:59 2013 -0700 +++ b/src/render/direct3d/SDL_render_d3d.c Sat Sep 28 14:07:05 2013 -0700 @@ -1875,6 +1875,19 @@ SDL_free(renderer); } +IDirect3DDevice9 * +SDL_RenderGetD3DDevice(SDL_Renderer * renderer) +{ + D3D_RenderData *data = (D3D_RenderData *) renderer->driverdata; + + // Make sure that this is a D3D renderer + if (renderer->DestroyRenderer != D3D_DestroyRenderer) { + SDL_SetError("Renderer is not a D3D renderer"); + return NULL; + } + return data->device; +} + #endif /* SDL_VIDEO_RENDER_D3D && !SDL_RENDER_DISABLED */ /* vi: set ts=4 sw=4 expandtab: */