mirror of https://github.com/encounter/SDL.git
Fixed bug 3981 - Inverted logic bug in SDL_renderer "overscan" feature
Eric wing There is a tiny bug in the new overscan code for the SDL_renderer. In SDL_renderer.c, line 1265, the if check for SDL_strcasecmp with "direct3d" needs to be inverted. Instead of: if(SDL_strcasecmp("direct3d", SDL_GetCurrentVideoDriver())) { It should be: if(0 == SDL_strcasecmp("direct3d", SDL_GetCurrentVideoDriver())) { This bug causes the "overscan" mode to pretty much be completely ignored in all cases and all things remain letterboxed (as before the feature).
This commit is contained in:
parent
0597bf6e99
commit
87894224b6
|
@ -1248,7 +1248,7 @@ UpdateLogicalSize(SDL_Renderer *renderer)
|
||||||
SDL_Rect viewport;
|
SDL_Rect viewport;
|
||||||
/* 0 is for letterbox, 1 is for overscan */
|
/* 0 is for letterbox, 1 is for overscan */
|
||||||
int scale_policy = 0;
|
int scale_policy = 0;
|
||||||
const char *hint = SDL_GetHint(SDL_HINT_RENDER_LOGICAL_SIZE_MODE);
|
const char *hint;
|
||||||
|
|
||||||
if (!renderer->logical_w || !renderer->logical_h) {
|
if (!renderer->logical_w || !renderer->logical_h) {
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1257,21 +1257,18 @@ UpdateLogicalSize(SDL_Renderer *renderer)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!hint) {
|
hint = SDL_GetHint(SDL_HINT_RENDER_LOGICAL_SIZE_MODE);
|
||||||
scale_policy = 0;
|
if (hint && (*hint == '1' || SDL_strcasecmp(hint, "overscan") == 0)) {
|
||||||
} else if ( *hint == '1' || SDL_strcasecmp(hint, "overscan") == 0) {
|
SDL_bool overscan_supported = SDL_TRUE;
|
||||||
/* Unfortunately, Direct3D 9 does't support negative viewport numbers
|
/* Unfortunately, Direct3D 9 doesn't support negative viewport numbers
|
||||||
which the main overscan implementation relies on.
|
which the overscan implementation relies on.
|
||||||
D3D11 does support negative values and uses a different id string
|
|
||||||
so overscan will work for D3D11.
|
|
||||||
*/
|
*/
|
||||||
if(SDL_strcasecmp("direct3d", SDL_GetCurrentVideoDriver())) {
|
if (SDL_strcasecmp(SDL_GetCurrentVideoDriver(), "direct3d") == 0) {
|
||||||
scale_policy = 0;
|
overscan_supported = SDL_FALSE;
|
||||||
} else {
|
}
|
||||||
|
if (overscan_supported) {
|
||||||
scale_policy = 1;
|
scale_policy = 1;
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
scale_policy = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
want_aspect = (float)renderer->logical_w / renderer->logical_h;
|
want_aspect = (float)renderer->logical_w / renderer->logical_h;
|
||||||
|
|
Loading…
Reference in New Issue