From d7d163fe97ab883ace7323c77ff0372b546db95b Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 11 Feb 2013 21:12:14 -0800 Subject: [PATCH] Fixed bug 1491 - Directx3d Crash on resize Spinduluz RenderTarget has to be released before a device reset is done. It's a D3DPOOL_DEFAULT surface (resides in video memory and have to be recreated). --- src/render/direct3d/SDL_render_d3d.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/render/direct3d/SDL_render_d3d.c b/src/render/direct3d/SDL_render_d3d.c index c86dc6cfc..6f0db688d 100644 --- a/src/render/direct3d/SDL_render_d3d.c +++ b/src/render/direct3d/SDL_render_d3d.c @@ -361,6 +361,9 @@ D3D_Reset(SDL_Renderer * renderer) D3D_RenderData *data = (D3D_RenderData *) renderer->driverdata; HRESULT result; + /* Release the default render target before reset */ + IDirect3DSurface9_Release(data->defaultRenderTarget); + result = IDirect3DDevice9_Reset(data->device, &data->pparams); if (FAILED(result)) { if (result == D3DERR_DEVICELOST) { @@ -377,6 +380,7 @@ D3D_Reset(SDL_Renderer * renderer) IDirect3DDevice9_SetRenderState(data->device, D3DRS_CULLMODE, D3DCULL_NONE); IDirect3DDevice9_SetRenderState(data->device, D3DRS_LIGHTING, FALSE); + IDirect3DDevice9_GetRenderTarget(data->device, 0, &data->defaultRenderTarget); return 0; }