Skip to content

Commit 098fe99

Browse files
committed
Viewport bias custom aspect fixes
1 parent c32aa80 commit 098fe99

1 file changed

Lines changed: 39 additions & 23 deletions

File tree

gfx/video_driver.c

Lines changed: 39 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2131,26 +2131,35 @@ void video_viewport_get_scaled_aspect2(struct video_viewport *vp,
21312131

21322132
if (settings->uints.video_aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
21332133
{
2134-
video_viewport_t
2135-
*custom_vp = &settings->video_vp_custom;
2136-
int padding_x = 0;
2137-
int padding_y = 0;
2138-
2139-
x = custom_vp->x;
2140-
y = custom_vp->y;
2141-
2142-
if (!y_down)
2143-
y = vp->full_height - (y + custom_vp->height);
2144-
padding_x += (vp_width - custom_vp->width);
2145-
if (padding_x < 0)
2146-
padding_x *= 2;
2147-
padding_y = vp_height - custom_vp->height;
2148-
if (padding_y < 0)
2149-
padding_y *= 2;
2150-
vp_width = custom_vp->width;
2151-
vp_height = custom_vp->height;
2152-
x += padding_x * vp_bias_x;
2153-
y += padding_y * vp_bias_y;
2134+
video_viewport_t *custom_vp = &settings->video_vp_custom;
2135+
2136+
if (custom_vp)
2137+
{
2138+
int padding_x = 0;
2139+
int padding_y = 0;
2140+
2141+
x = custom_vp->x;
2142+
y = custom_vp->y;
2143+
2144+
padding_x = vp_width - custom_vp->width;
2145+
padding_y = vp_height - custom_vp->height;
2146+
2147+
if (padding_x < 0)
2148+
{
2149+
x -= padding_x / 2;
2150+
padding_x *= 2;
2151+
}
2152+
if (padding_y < 0)
2153+
{
2154+
y -= padding_y / 2;
2155+
padding_y *= 2;
2156+
}
2157+
2158+
vp_width = custom_vp->width;
2159+
vp_height = custom_vp->height;
2160+
x += padding_x * vp_bias_x;
2161+
y += padding_y * vp_bias_y;
2162+
}
21542163
}
21552164
else
21562165
{
@@ -2461,19 +2470,26 @@ void video_viewport_get_scaled_integer(struct video_viewport *vp,
24612470
if (video_aspect_ratio_idx == ASPECT_RATIO_CUSTOM)
24622471
{
24632472
struct video_viewport *custom_vp = &settings->video_vp_custom;
2473+
24642474
if (custom_vp)
24652475
{
24662476
x = custom_vp->x;
24672477
y = custom_vp->y;
24682478

2469-
if (!y_down)
2470-
y = vp->height - (y + custom_vp->height);
24712479
padding_x = width - custom_vp->width;
2480+
padding_y = height - custom_vp->height;
2481+
24722482
if (padding_x < 0)
2483+
{
2484+
x -= padding_x / 2;
24732485
padding_x *= 2;
2474-
padding_y = height - custom_vp->height;
2486+
}
24752487
if (padding_y < 0)
2488+
{
2489+
y -= padding_y / 2;
24762490
padding_y *= 2;
2491+
}
2492+
24772493
width = custom_vp->width;
24782494
height = custom_vp->height;
24792495
}

0 commit comments

Comments
 (0)