Fixed bug where the render target is updated instead of the default output when the window is resized.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
diff --git a/src/render/SDL_render.c b/src/render/SDL_render.c
index 1201b0e..4480d71 100644
--- a/src/render/SDL_render.c
+++ b/src/render/SDL_render.c
@@ -115,6 +115,12 @@ SDL_RendererEventWatch(void *userdata, SDL_Event *event)
}
if (event->window.event == SDL_WINDOWEVENT_SIZE_CHANGED) {
+ /* Make sure we're operating on the default render target */
+ SDL_Texture *saved_target = SDL_GetRenderTarget(renderer);
+ if (saved_target) {
+ SDL_SetRenderTarget(renderer, NULL);
+ }
+
if (renderer->logical_w) {
UpdateLogicalSize(renderer);
} else {
@@ -140,6 +146,10 @@ SDL_RendererEventWatch(void *userdata, SDL_Event *event)
renderer->UpdateViewport(renderer);
}
}
+
+ if (saved_target) {
+ SDL_SetRenderTarget(renderer, saved_target);
+ }
} else if (event->window.event == SDL_WINDOWEVENT_HIDDEN) {
renderer->hidden = SDL_TRUE;
} else if (event->window.event == SDL_WINDOWEVENT_SHOWN) {
@@ -916,12 +926,12 @@ int SDL_UpdateYUVTexture(SDL_Texture * texture, const SDL_Rect * rect,
SDL_assert(!texture->native);
renderer = texture->renderer;
SDL_assert(renderer->UpdateTextureYUV);
- if (renderer->UpdateTextureYUV) {
- return renderer->UpdateTextureYUV(renderer, texture, rect, Yplane, Ypitch, Uplane, Upitch, Vplane, Vpitch);
- } else {
- return SDL_Unsupported();
- }
- }
+ if (renderer->UpdateTextureYUV) {
+ return renderer->UpdateTextureYUV(renderer, texture, rect, Yplane, Ypitch, Uplane, Upitch, Vplane, Vpitch);
+ } else {
+ return SDL_Unsupported();
+ }
+ }
}
static int