#include "gtksnapshot.h"
#include "gtkrenderlayoutprivate.h"
#include "gtkcssnodeprivate.h"
+#include "gdk/gdkgltextureprivate.h"
+#include "gdk/gdkglcontextprivate.h"
#include <epoxy/gl.h>
release_texture (gpointer data)
{
Texture *texture = data;
+ gpointer sync;
+
+ sync = gdk_gl_texture_builder_get_sync (texture->builder);
+ if (sync)
+ {
+ glDeleteSync (sync);
+ gdk_gl_texture_builder_set_sync (texture->builder, NULL);
+ }
+
texture->holder = NULL;
}
if (status == GL_FRAMEBUFFER_COMPLETE)
{
Texture *texture;
+ gpointer sync = NULL;
if (priv->needs_render || priv->auto_render)
{
priv->texture = NULL;
priv->textures = g_list_prepend (priv->textures, texture);
+ if (gdk_gl_context_has_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,
release_texture,
texture);