فهرست منبع

Fixed SDL_RenderSetVSync does not update flags if simulated vsync is on

This lets the user to correctly detect current vsync state by reading SDL_RendererInfo.
Also fixes SetVSync's return value check (it may be positive for error too).

(cherry picked from commit d78072fcd46943288a6007cd6f4ab1f98f446b1d)
Ivan Mogilko 2 سال پیش
والد
کامیت
f360965db6
1فایلهای تغییر یافته به همراه6 افزوده شده و 1 حذف شده
  1. 6 1
      src/render/SDL_render.c

+ 6 - 1
src/render/SDL_render.c

@@ -4306,8 +4306,13 @@ int SDL_SetRenderVSync(SDL_Renderer *renderer, int vsync)
     }
 
     if (!renderer->SetVSync ||
-        renderer->SetVSync(renderer, vsync) < 0) {
+        renderer->SetVSync(renderer, vsync) != 0) {
         renderer->simulate_vsync = vsync ? SDL_TRUE : SDL_FALSE;
+        if (renderer->simulate_vsync) {
+            renderer->info.flags |= SDL_RENDERER_PRESENTVSYNC;
+        } else {
+            renderer->info.flags &= ~SDL_RENDERER_PRESENTVSYNC;
+        }
     } else {
         renderer->simulate_vsync = SDL_FALSE;
     }