Added platform specific call: SDL_RenderGetD3DDevice()
authorSam Lantinga <slouken@libsdl.org>
Sat, 28 Sep 2013 14:07:05 -0700
changeset 7763 fc802d707136
parent 7762 51abf7664304
child 7764 0f48b5f28668
Added platform specific call: SDL_RenderGetD3DDevice()
include/SDL_system.h
src/render/direct3d/SDL_render_d3d.c
--- 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__ */
 
 
--- 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: */