From 5cf2fc3a5fc2f7578286bb9b85c7e6bac9f6f278 Mon Sep 17 00:00:00 2001 From: Marcelo Fernandez Date: Mon, 23 Oct 2017 12:05:42 -0300 Subject: [PATCH] Implemented vsync OS functions for OS X --- platform/osx/os_osx.h | 3 +++ platform/osx/os_osx.mm | 17 +++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/platform/osx/os_osx.h b/platform/osx/os_osx.h index dd9a9cef538..ab2f89a3f02 100644 --- a/platform/osx/os_osx.h +++ b/platform/osx/os_osx.h @@ -212,6 +212,9 @@ public: virtual void set_borderless_window(int p_borderless); virtual bool get_borderless_window(); + virtual void set_use_vsync(bool p_enable); + virtual bool is_vsync_enabled() const; + void run(); void set_mouse_mode(MouseMode p_mode); diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm index 1a382a8ade9..361fe398f26 100644 --- a/platform/osx/os_osx.mm +++ b/platform/osx/os_osx.mm @@ -1810,6 +1810,23 @@ Error OS_OSX::move_path_to_trash(String p_dir) { return OK; } +void OS_OSX::set_use_vsync(bool p_enable) { + CGLContextObj ctx = CGLGetCurrentContext(); + if (ctx) { + GLint swapInterval = p_enable ? 1 : 0; + CGLSetParameter(ctx, kCGLCPSwapInterval, &swapInterval); + } +} + +bool OS_OSX::is_vsync_enabled() const { + GLint swapInterval = 0; + CGLContextObj ctx = CGLGetCurrentContext(); + if (ctx) { + CGLGetParameter(ctx, kCGLCPSwapInterval, &swapInterval); + } + return swapInterval ? true : false; +} + OS_OSX *OS_OSX::singleton = NULL; OS_OSX::OS_OSX() {