summaryrefslogtreecommitdiff
path: root/gdk/gdkgltexture.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2021-09-12 05:11:58 +0200
committerBenjamin Otte <otte@redhat.com>2021-09-12 05:22:21 +0200
commit74ce69a8a1187c9f4b65a0f8d38363f0d83b7574 (patch)
tree1b39dd93b264da8010b23b049cbdcf82e7be84b6 /gdk/gdkgltexture.c
parent4f17f3ac240117ae38cd83e3c8140a4b2a8dccff (diff)
downloadgtk+-74ce69a8a1187c9f4b65a0f8d38363f0d83b7574.tar.gz
gltexture: Make release() use download_texture()
1. It avoids Cairo, and in particular conversion to Cairo. 2. Keeping a texture allows easy chaining in the vfuncs. 3. Using a texture means releasing will work for HDR formats too, once we add them.
Diffstat (limited to 'gdk/gdkgltexture.c')
-rw-r--r--gdk/gdkgltexture.c16
1 files changed, 1 insertions, 15 deletions
diff --git a/gdk/gdkgltexture.c b/gdk/gdkgltexture.c
index 9b5aa86866..ef95c4604b 100644
--- a/gdk/gdkgltexture.c
+++ b/gdk/gdkgltexture.c
@@ -216,24 +216,10 @@ gdk_gl_texture_get_id (GdkGLTexture *self)
void
gdk_gl_texture_release (GdkGLTexture *self)
{
- GdkTexture *texture = GDK_TEXTURE (self);
- GBytes *bytes;
- guchar *data;
- gsize stride;
-
g_return_if_fail (GDK_IS_GL_TEXTURE (self));
g_return_if_fail (self->saved == NULL);
- stride = texture->width * 4;
- data = malloc (stride * texture->height);
- gdk_texture_download (texture, data, stride);
- bytes = g_bytes_new_take (data, stride * texture->height);
- self->saved = gdk_memory_texture_new (texture->width,
- texture->height,
- GDK_MEMORY_DEFAULT,
- bytes,
- stride);
- g_bytes_unref (bytes);
+ self->saved = gdk_texture_download_texture (GDK_TEXTURE (self));
if (self->destroy)
{