diff options
author | Christian Hergert <chergert@redhat.com> | 2020-11-26 11:18:10 -0800 |
---|---|---|
committer | Christian Hergert <chergert@redhat.com> | 2020-12-01 16:19:04 -0800 |
commit | 27b9a9e7eff60d57cb31fc496cab41873cbd236b (patch) | |
tree | 4b340ccbbb5c6a97ad98acbe53c6dc17fcae708f | |
parent | a020c901ba2e52e6c8e12551910061037a2c2180 (diff) | |
download | gtk+-27b9a9e7eff60d57cb31fc496cab41873cbd236b.tar.gz |
macos: glFlush() when switching GL contexts
The Mac OpenGL programming guide suggests that you glFlush() before changing
contexts to ensure that the commands have been submitted.
-rw-r--r-- | gdk/macos/gdkmacosglcontext.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/gdk/macos/gdkmacosglcontext.c b/gdk/macos/gdkmacosglcontext.c index 06829b9184..00ddfefcde 100644 --- a/gdk/macos/gdkmacosglcontext.c +++ b/gdk/macos/gdkmacosglcontext.c @@ -447,15 +447,28 @@ _gdk_macos_gl_context_new (GdkMacosSurface *surface, gboolean _gdk_macos_gl_context_make_current (GdkMacosGLContext *self) { + NSOpenGLContext *current; + g_return_val_if_fail (GDK_IS_MACOS_GL_CONTEXT (self), FALSE); - if (self->gl_context != nil) + if (self->gl_context == NULL) + return FALSE; + + current = [NSOpenGLContext currentContext]; + + if (self->gl_context != current) { + /* The OpenGL mac programming guide suggests that glFlush() is called + * before switching current contexts to ensure that the drawing commands + * are submitted. + */ + if (current != NULL) + glFlush (); + [self->gl_context makeCurrentContext]; - return TRUE; } - return FALSE; + return TRUE; } G_GNUC_END_IGNORE_DEPRECATIONS |