summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2023-04-26 12:03:29 +0200
committerMatthias Clasen <mclasen@redhat.com>2023-04-26 12:03:29 +0200
commit69a0d4c7d758418d8ad448a6b9764e9da20e42cd (patch)
tree71e6f28cb7e80704dcaa9563570860c1596ff5f4
parent7fe48792eeb054fa79b9a98723896af2eeaf0c42 (diff)
downloadgtk+-69a0d4c7d758418d8ad448a6b9764e9da20e42cd.tar.gz
glarea: Only use fences when supported
-rw-r--r--gtk/gtkglarea.c7
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,