Fixed bug 2646 - Problems with software renderer when SDL_SetRenderLogicalSize set Fixed setting the software renderer clip rectangle when a viewport is set
diff --git a/src/render/software/SDL_render_sw.c b/src/render/software/SDL_render_sw.c
index e8d323b..62b680e 100644
--- a/src/render/software/SDL_render_sw.c
+++ b/src/render/software/SDL_render_sw.c
@@ -371,9 +371,14 @@ SW_UpdateClipRect(SDL_Renderer * renderer)
SDL_Surface *surface = data->surface;
if (surface) {
if (renderer->clipping_enabled) {
- SDL_SetClipRect(surface, &renderer->clip_rect);
+ SDL_Rect clip_rect;
+ clip_rect = renderer->clip_rect;
+ clip_rect.x += renderer->viewport.x;
+ clip_rect.y += renderer->viewport.y;
+ SDL_IntersectRect(&renderer->viewport, &clip_rect, &clip_rect);
+ SDL_SetClipRect(surface, &clip_rect);
} else {
- SDL_SetClipRect(surface, NULL);
+ SDL_SetClipRect(surface, &renderer->viewport);
}
}
return 0;