metal: Respect the vsync flag on macOS 10.13+.
diff --git a/src/render/metal/SDL_render_metal.m b/src/render/metal/SDL_render_metal.m
index 33b2172..f993881 100644
--- a/src/render/metal/SDL_render_metal.m
+++ b/src/render/metal/SDL_render_metal.m
@@ -356,8 +356,14 @@ METAL_CreateRenderer(SDL_Window * window, Uint32 flags)
renderer->info = METAL_RenderDriver.info;
renderer->info.flags = (SDL_RENDERER_ACCELERATED | SDL_RENDERER_TARGETTEXTURE);
- // !!! FIXME: how do you control this in Metal?
- renderer->info.flags |= SDL_RENDERER_PRESENTVSYNC;
+#if defined(__MACOSX__) && defined(MAC_OS_X_VERSION_10_13)
+ if (@available(macOS 10.13, *)) {
+ layer.displaySyncEnabled = (flags & SDL_RENDERER_PRESENTVSYNC) != 0;
+ } else
+#endif
+ {
+ renderer->info.flags |= SDL_RENDERER_PRESENTVSYNC;
+ }
return renderer;
}