direct3d: Release and NULL out vertex buffers on reset.
Otherwise they are irretrievably lost on window resize, etc, which makes
rendering freeze and other disasters.
Fixes Bugzilla #4358.
diff --git a/src/render/direct3d/SDL_render_d3d.c b/src/render/direct3d/SDL_render_d3d.c
index 04cfcef..7f7ba18 100644
--- a/src/render/direct3d/SDL_render_d3d.c
+++ b/src/render/direct3d/SDL_render_d3d.c
@@ -1566,6 +1566,15 @@
}
}
+ /* Release all vertex buffers */
+ int i;
+ for (i = 0; i < SDL_arraysize(data->vertexBuffers); ++i) {
+ if (data->vertexBuffers[i]) {
+ IDirect3DVertexBuffer9_Release(data->vertexBuffers[i]);
+ }
+ data->vertexBuffers[i] = NULL;
+ }
+
result = IDirect3DDevice9_Reset(data->device, &data->pparams);
if (FAILED(result)) {
if (result == D3DERR_DEVICELOST) {