Bläddra i källkod

End the scene before resetting the D3D device, since we'll start with BeginScene after that.

If we don't do this, we'll end up with unbalanced Begin/End scene pairs which causes D3DERR_INVALIDCALL in the present.

Fixes https://github.com/libsdl-org/SDL/issues/4933
Sam Lantinga 3 år sedan
förälder
incheckning
3a31a45028
1 ändrade filer med 6 tillägg och 0 borttagningar
  1. 6 0
      src/render/direct3d/SDL_render_d3d.c

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

@@ -1425,6 +1425,12 @@ D3D_Reset(SDL_Renderer * renderer)
     SDL_Texture *texture;
     int i;
 
+    /* Cancel any scene that we've started */
+    if (!data->beginScene) {
+        IDirect3DDevice9_EndScene(data->device);
+        data->beginScene = SDL_TRUE;
+    }
+
     /* Release the default render target before reset */
     if (data->defaultRenderTarget) {
         IDirect3DSurface9_Release(data->defaultRenderTarget);