jpeg: Use GdkTexureDownloader when saving
authorBenjamin Otte <otte@redhat.com>
Tue, 14 Feb 2023 06:18:59 +0000 (07:18 +0100)
committerBenjamin Otte <otte@redhat.com>
Tue, 14 Feb 2023 23:39:18 +0000 (00:39 +0100)
gdk/loaders/gdkjpeg.c

index 6eada9d515608648c0ce28f93704a33ccc0f27a9..29f9756bb37a2115876e88d94c7c1d3d91a23c37 100644 (file)
@@ -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);