mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-09-11 13:58:13 +00:00
render: Clip bresenham lines against a real viewport thing.
You can't just use renderer->view->viewport, because it might be (0,0), -1x-1. I _think_ this is more right? Fixes #8609.
This commit is contained in:
@@ -2755,11 +2755,13 @@ static int RenderLineBresenham(SDL_Renderer *renderer, int x1, int y1, int x2, i
|
|||||||
int retval;
|
int retval;
|
||||||
SDL_bool isstack;
|
SDL_bool isstack;
|
||||||
SDL_FPoint *points;
|
SDL_FPoint *points;
|
||||||
|
SDL_Rect viewport;
|
||||||
|
|
||||||
/* the backend might clip this further to the clipping rect, but we
|
/* the backend might clip this further to the clipping rect, but we
|
||||||
just want a basic safety against generating millions of points for
|
just want a basic safety against generating millions of points for
|
||||||
massive lines. */
|
massive lines. */
|
||||||
if (!SDL_GetRectAndLineIntersection(&renderer->view->viewport, &x1, &y1, &x2, &y2)) {
|
GetRenderViewportInPixels(renderer, &viewport);
|
||||||
|
if (!SDL_GetRectAndLineIntersection(&viewport, &x1, &y1, &x2, &y2)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user