diff options
author | Matthias Clasen <mclasen@redhat.com> | 2023-04-26 12:03:29 +0200 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2023-04-26 12:03:29 +0200 |
commit | 69a0d4c7d758418d8ad448a6b9764e9da20e42cd (patch) | |
tree | 71e6f28cb7e80704dcaa9563570860c1596ff5f4 | |
parent | 7fe48792eeb054fa79b9a98723896af2eeaf0c42 (diff) | |
download | gtk+-69a0d4c7d758418d8ad448a6b9764e9da20e42cd.tar.gz |
glarea: Only use fences when supported
-rw-r--r-- | gtk/gtkglarea.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gtk/gtkglarea.c b/gtk/gtkglarea.c index 601f8ffc6a..9d9438f098 100644 --- a/gtk/gtkglarea.c +++ b/gtk/gtkglarea.c @@ -33,6 +33,7 @@ #include "gtkrenderlayoutprivate.h" #include "gtkcssnodeprivate.h" #include "gdk/gdkgltextureprivate.h" +#include "gdk/gdkglcontextprivate.h" #include <epoxy/gl.h> @@ -748,7 +749,7 @@ gtk_gl_area_snapshot (GtkWidget *widget, if (status == GL_FRAMEBUFFER_COMPLETE) { Texture *texture; - gpointer sync; + gpointer sync = NULL; if (priv->needs_render || priv->auto_render) { @@ -767,7 +768,9 @@ gtk_gl_area_snapshot (GtkWidget *widget, priv->texture = NULL; priv->textures = g_list_prepend (priv->textures, texture); - sync = glFenceSync (GL_SYNC_GPU_COMMANDS_COMPLETE, 0); + if (gdk_gl_context_has_fence_sync (priv->context)) + sync = glFenceSync (GL_SYNC_GPU_COMMANDS_COMPLETE, 0); + gdk_gl_texture_builder_set_sync (texture->builder, sync); texture->holder = gdk_gl_texture_builder_build (texture->builder, |