Implemented vsync OS functions for OS X

This commit is contained in:
Marcelo Fernandez 2017-10-23 13:26:33 -03:00
parent 804cab31de
commit ad4000d376
2 changed files with 20 additions and 0 deletions

View file

@ -219,6 +219,9 @@ public:
virtual bool _check_internal_feature_support(const String &p_feature); virtual bool _check_internal_feature_support(const String &p_feature);
virtual void set_use_vsync(bool p_enable);
virtual bool is_vsync_enabled() const;
void run(); void run();
void set_mouse_mode(MouseMode p_mode); void set_mouse_mode(MouseMode p_mode);

View file

@ -1954,6 +1954,23 @@ Error OS_OSX::move_to_trash(const String &p_path) {
return OK; 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::singleton = NULL;
OS_OSX::OS_OSX() { OS_OSX::OS_OSX() {