summaryrefslogtreecommitdiff
path: root/gdk
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2023-02-14 07:18:59 +0100
committerBenjamin Otte <otte@redhat.com>2023-02-15 00:39:18 +0100
commitf05d801e28c13f8741e673d974df106a8d6b8f3d (patch)
tree7c92dd818b90790584397bffbebae944bfbde32e /gdk
parent4afec951c7e22c729131c007cb102b0204bf6574 (diff)
downloadgtk+-f05d801e28c13f8741e673d974df106a8d6b8f3d.tar.gz
jpeg: Use GdkTexureDownloader when saving
Diffstat (limited to 'gdk')
-rw-r--r--gdk/loaders/gdkjpeg.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/gdk/loaders/gdkjpeg.c b/gdk/loaders/gdkjpeg.c
index 6eada9d515..29f9756bb3 100644
--- a/gdk/loaders/gdkjpeg.c
+++ b/gdk/loaders/gdkjpeg.c
@@ -23,7 +23,7 @@
#include <glib/gi18n-lib.h>
#include "gdktexture.h"
-#include "gdkmemorytextureprivate.h"
+#include "gdktexturedownloaderprivate.h"
#include "gdkprofilerprivate.h"
@@ -251,7 +251,8 @@ gdk_save_jpeg (GdkTexture *texture)
guchar *data = NULL;
gulong size = 0;
guchar *input = NULL;
- GdkMemoryTexture *memtex = NULL;
+ GdkTextureDownloader downloader;
+ GBytes *texbytes;
const guchar *texdata;
gsize texstride;
guchar *row;
@@ -270,7 +271,7 @@ gdk_save_jpeg (GdkTexture *texture)
free (data);
g_free (input);
jpeg_destroy_compress (&info);
- g_clear_object (&memtex);
+ g_clear_pointer (&texbytes, g_bytes_unref);
return NULL;
}
@@ -289,10 +290,11 @@ gdk_save_jpeg (GdkTexture *texture)
jpeg_mem_dest (&info, &data, &size);
- memtex = gdk_memory_texture_from_texture (texture,
- GDK_MEMORY_R8G8B8);
- texdata = gdk_memory_texture_get_data (memtex);
- texstride = gdk_memory_texture_get_stride (memtex);
+ gdk_texture_downloader_init (&downloader, texture);
+ gdk_texture_downloader_set_format (&downloader, GDK_MEMORY_R8G8B8);
+ texbytes = gdk_texture_downloader_download_bytes (&downloader, &texstride);
+ gdk_texture_downloader_finish (&downloader);
+ texdata = g_bytes_get_data (texbytes, NULL);
jpeg_start_compress (&info, TRUE);
@@ -304,7 +306,7 @@ gdk_save_jpeg (GdkTexture *texture)
jpeg_finish_compress (&info);
- g_object_unref (memtex);
+ g_bytes_unref (texbytes);
g_free (input);
jpeg_destroy_compress (&info);