From c8c05a9fc3da6f1c3013681a8c5add8ed1ae18b2 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 8 Mar 2020 19:23:21 -0700 Subject: [PATCH] Fixed bug 4991 - Pixel shader problem when recreating a texture for direct3d renderer cmediaplayer Hi, i already mentioned in the SDL discourse a bug that recreating of a texture occours pixel shader problem on direct3d renderer. There is no problem for direct3d11. You can see the issue by using my app named C Media Player which is available for Windows for free using my web site www.cmediaplayer.com. Just follow the steps: *Open a media file *When playing the file change the scale quality under the video menu. *You will see the problem. --- src/render/direct3d/SDL_render_d3d.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/render/direct3d/SDL_render_d3d.c b/src/render/direct3d/SDL_render_d3d.c index 83859334a..f04a50a6d 100644 --- a/src/render/direct3d/SDL_render_d3d.c +++ b/src/render/direct3d/SDL_render_d3d.c @@ -712,6 +712,7 @@ D3D_UnlockTexture(SDL_Renderer * renderer, SDL_Texture * texture) texturedata->texture.dirty = SDL_TRUE; if (data->drawstate.texture == texture) { data->drawstate.texture = NULL; + data->drawstate.shader = NULL; IDirect3DDevice9_SetPixelShader(data->device, NULL); IDirect3DDevice9_SetTexture(data->device, 0, NULL); if (texturedata->yuv) { @@ -1531,6 +1532,7 @@ D3D_DestroyTexture(SDL_Renderer * renderer, SDL_Texture * texture) if (renderdata->drawstate.texture == texture) { renderdata->drawstate.texture = NULL; + renderdata->drawstate.shader = NULL; IDirect3DDevice9_SetPixelShader(renderdata->device, NULL); IDirect3DDevice9_SetTexture(renderdata->device, 0, NULL); if (data->yuv) {