Jelajahi Sumber

Fixed resetting the current render target if the D3D device is reset while using a non-default render target.

Sam Lantinga 11 tahun lalu
induk
melakukan
6b33f2e8ca
1 mengubah file dengan 5 tambahan dan 0 penghapusan
  1. 5 0
      src/render/direct3d/SDL_render_d3d.c

+ 5 - 0
src/render/direct3d/SDL_render_d3d.c

@@ -481,6 +481,10 @@ D3D_Reset(SDL_Renderer * renderer)
         IDirect3DSurface9_Release(data->defaultRenderTarget);
         data->defaultRenderTarget = NULL;
     }
+    if (data->currentRenderTarget != NULL) {
+        IDirect3DSurface9_Release(data->currentRenderTarget);
+        data->currentRenderTarget = NULL;
+    }
 
     /* Release application render targets */
     for (texture = renderer->textures; texture; texture = texture->next) {
@@ -508,6 +512,7 @@ D3D_Reset(SDL_Renderer * renderer)
 
     IDirect3DDevice9_GetRenderTarget(data->device, 0, &data->defaultRenderTarget);
     D3D_InitRenderState(data);
+    D3D_SetRenderTarget(renderer, renderer->target);
     D3D_UpdateViewport(renderer);
 
     /* Let the application know that render targets were reset */