소스 검색

overscan (feature for SDL_RenderSetLogicalSize): Fix to ignore overscan hint when using the Direct3D 9 backend.
D39 does not support negative viewport values which the current implementation relies on.
D3D11 does support negative viewport values so that will continue working.
Refer to Bug 2799.

Eric Wing 10 년 전
부모
커밋
bb3cb4f42a
1개의 변경된 파일10개의 추가작업 그리고 1개의 파일을 삭제
  1. 10 1
      src/render/SDL_render.c

+ 10 - 1
src/render/SDL_render.c

@@ -1153,7 +1153,16 @@ UpdateLogicalSize(SDL_Renderer *renderer)
     if (!hint) {
         scale_policy = 0;
     } else if ( *hint == '1' || SDL_strcasecmp(hint, "overscan") == 0)  {
-        scale_policy = 1;
+        /* Unfortunately, Direct3D 9 does't support negative viewport numbers
+        which the main 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())) {
+            scale_policy = 0;
+        } else {
+            scale_policy = 1;
+        }
     } else {
         scale_policy = 0;
     }