[gtk/wip/chergert/gdk-macos-for-master: 2/3] macos: glFlush() when switching GL contexts
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/chergert/gdk-macos-for-master: 2/3] macos: glFlush() when switching GL contexts
- Date: Wed, 2 Dec 2020 00:19:34 +0000 (UTC)
commit 27b9a9e7eff60d57cb31fc496cab41873cbd236b
Author: Christian Hergert <chergert redhat com>
Date: Thu Nov 26 11:18:10 2020 -0800
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.
gdk/macos/gdkmacosglcontext.c | 19 ++++++++++++++++---
1 file 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
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]