From 61de3a326010bb9a579814da506a75ecf25eaa9e Mon Sep 17 00:00:00 2001 From: sonninnos <45124675+sonninnos@users.noreply.github.com> Date: Thu, 20 Feb 2025 19:51:19 +0200 Subject: [PATCH] Integer scaling improvements (#17606) --- gfx/video_driver.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 8574cf5c942..be6c830e0d4 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -2512,11 +2512,15 @@ void video_viewport_get_scaled_integer(struct video_viewport *vp, if (overscale_h_diff <= underscale_h_diff) max_scale_h = overscale_h; + /* Limit width overscale */ + if (max_scale_w * content_width >= width + ((int)content_width / 2)) + max_scale_w = underscale_w; + /* Allow overscale when it is close enough */ if (scale_h_diff > 0 && scale_h_diff < 64) max_scale_h = overscale_h; /* Overscale will be too much even if it is closer */ - else if ((scale_h_diff < -155 && scale_h_diff > (int)-content_height / 2) + else if ((scale_h_diff < -140 && scale_h_diff >= (int)-content_height / 2) || (scale_h_diff < -30 && scale_h_diff > -50) || (scale_h_diff > 20)) max_scale_h = underscale_h; @@ -2617,7 +2621,7 @@ void video_viewport_get_scaled_integer(struct video_viewport *vp, || axis == VIDEO_SCALE_INTEGER_AXIS_XHALF) { if ( max_scale_h == (height / content_height) - && content_height / 300 + && content_height / ((rotation % 2) ? 288 : 300) && content_height * max_scale_h < height * 0.90f ) {