mirror of
https://github.com/Relintai/sdl2_frt.git
synced 2024-12-16 11:06:49 +01:00
Call AddRef() on the device so it doesn't accidentally get released from underneath the caller.
This commit is contained in:
parent
25f607a3c2
commit
202528a48f
@ -49,7 +49,9 @@ extern "C" {
|
|||||||
*/
|
*/
|
||||||
extern DECLSPEC int SDLCALL SDL_Direct3D9GetAdapterIndex( int displayIndex );
|
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. */
|
/* Returns the D3D device associated with a renderer, or NULL if it's not a D3D renderer.
|
||||||
|
Once you are done using the device, you should release it to avoid a resource leak.
|
||||||
|
*/
|
||||||
typedef struct IDirect3DDevice9 IDirect3DDevice9;
|
typedef struct IDirect3DDevice9 IDirect3DDevice9;
|
||||||
extern DECLSPEC IDirect3DDevice9* SDLCALL SDL_RenderGetD3D9Device(SDL_Renderer * renderer);
|
extern DECLSPEC IDirect3DDevice9* SDLCALL SDL_RenderGetD3D9Device(SDL_Renderer * renderer);
|
||||||
|
|
||||||
|
@ -1887,13 +1887,19 @@ IDirect3DDevice9 *
|
|||||||
SDL_RenderGetD3D9Device(SDL_Renderer * renderer)
|
SDL_RenderGetD3D9Device(SDL_Renderer * renderer)
|
||||||
{
|
{
|
||||||
D3D_RenderData *data = (D3D_RenderData *) renderer->driverdata;
|
D3D_RenderData *data = (D3D_RenderData *) renderer->driverdata;
|
||||||
|
IDirect3DDevice9 *device;
|
||||||
|
|
||||||
// Make sure that this is a D3D renderer
|
// Make sure that this is a D3D renderer
|
||||||
if (renderer->DestroyRenderer != D3D_DestroyRenderer) {
|
if (renderer->DestroyRenderer != D3D_DestroyRenderer) {
|
||||||
SDL_SetError("Renderer is not a D3D renderer");
|
SDL_SetError("Renderer is not a D3D renderer");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return data->device;
|
|
||||||
|
device = data->device;
|
||||||
|
if (device) {
|
||||||
|
IDirect3DDevice9_AddRef( device );
|
||||||
|
}
|
||||||
|
return device;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* SDL_VIDEO_RENDER_D3D && !SDL_RENDER_DISABLED */
|
#endif /* SDL_VIDEO_RENDER_D3D && !SDL_RENDER_DISABLED */
|
||||||
|
Loading…
Reference in New Issue
Block a user