File: Fixed-destination-coordinates-when-using-scale-with-the-s.patch

package info (click to toggle)
libsdl3 3.2.24%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 42,228 kB
  • sloc: ansic: 390,718; objc: 12,354; xml: 9,084; cpp: 5,728; perl: 4,589; python: 3,372; sh: 1,032; makefile: 265; cs: 56
file content (32 lines) | stat: -rw-r--r-- 1,523 bytes parent folder | download
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
From: Sam Lantinga <slouken@libsdl.org>
Date: Fri, 3 Oct 2025 13:57:19 -0700
Subject: Fixed destination coordinates when using scale with the software
 renderer

(cherry picked from commit d333044462ed2f2ef43f79139c49a6797fc29bf4)

Bug: https://github.com/libsdl-org/SDL/issues/14051
Origin: upstream, 3.2.26, commit:2a3a8f736cebbc26a65b11615e587bf31685049b
---
 src/render/software/SDL_render_sw.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/render/software/SDL_render_sw.c b/src/render/software/SDL_render_sw.c
index 37359be..2812e02 100644
--- a/src/render/software/SDL_render_sw.c
+++ b/src/render/software/SDL_render_sw.c
@@ -878,9 +878,11 @@ static bool SW_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd, v
             PrepTextureForCopy(cmd, &drawstate);
 
             // Apply viewport
-            if (drawstate.viewport && (drawstate.viewport->x || drawstate.viewport->y)) {
-                copydata->dstrect.x += drawstate.viewport->x;
-                copydata->dstrect.y += drawstate.viewport->y;
+            if (drawstate.viewport &&
+                (drawstate.viewport->x || drawstate.viewport->y) &&
+                (copydata->scale_x > 0.0f && copydata->scale_y > 0.0f)) {
+                copydata->dstrect.x += drawstate.viewport->x / copydata->scale_x;
+                copydata->dstrect.y += drawstate.viewport->y / copydata->scale_y;
             }
 
             SW_RenderCopyEx(renderer, surface, cmd->data.draw.texture, &copydata->srcrect,