From 04ccc15fd48d320a1a2c5e61a7282e8f24f6b928 Mon Sep 17 00:00:00 2001 From: arch1t3cht Date: Wed, 2 Nov 2022 21:49:30 +0100 Subject: [PATCH] Fix overscan mask with DPI scaling --- src/video_display.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/video_display.cpp b/src/video_display.cpp index 8d85311a6..1919fc577 100644 --- a/src/video_display.cpp +++ b/src/video_display.cpp @@ -227,19 +227,19 @@ catch (const agi::Exception &err) { } void VideoDisplay::DrawOverscanMask(float horizontal_percent, float vertical_percent) const { - Vector2D v(viewport_width, viewport_height); + Vector2D v = Vector2D(viewport_width, viewport_height) / scale_factor; Vector2D size = Vector2D(horizontal_percent, vertical_percent) / 2 * v; // Clockwise from top-left Vector2D corners[] = { size, - Vector2D(viewport_width - size.X(), size), + Vector2D(viewport_width / scale_factor - size.X(), size), v - size, - Vector2D(size, viewport_height - size.Y()) + Vector2D(size, viewport_height / scale_factor - size.Y()) }; // Shift to compensate for black bars - Vector2D pos(viewport_left, viewport_top); + Vector2D pos = Vector2D(viewport_left, viewport_top) / scale_factor; for (auto& corner : corners) corner = corner + pos; @@ -261,7 +261,7 @@ void VideoDisplay::DrawOverscanMask(float horizontal_percent, float vertical_per std::vector vstart(1, 0); std::vector vcount(1, count); - gl.DrawMultiPolygon(points, vstart, vcount, Vector2D(viewport_left, viewport_top), Vector2D(viewport_width, viewport_height), true); + gl.DrawMultiPolygon(points, vstart, vcount, pos, v, true); } void VideoDisplay::PositionVideo() {