[gimp] Disable automatic metadata handling for HEIF plug-in



commit 6488a5e480685fa435bf20501f0325abb7a1eaeb
Author: Daniel Novomesky <dnovomesky gmail com>
Date:   Fri Mar 12 14:53:59 2021 +0100

    Disable automatic metadata handling for HEIF plug-in
    
    The plug-in saves metadata together with exported image.
    We ensure that GIMP won’t try to save metadata to
    already exported file second time.

 plug-ins/common/file-heif.c | 28 ++++++++++++++++++++++------
 1 file changed, 22 insertions(+), 6 deletions(-)
---
diff --git a/plug-ins/common/file-heif.c b/plug-ins/common/file-heif.c
index 546c09f948..4f569c50ed 100644
--- a/plug-ins/common/file-heif.c
+++ b/plug-ins/common/file-heif.c
@@ -458,8 +458,7 @@ heif_save (GimpProcedure        *procedure,
   gegl_init (NULL, NULL);
 
   config = gimp_procedure_create_config (procedure);
-  metadata = gimp_procedure_config_begin_export (config, image, run_mode,
-                                                 args, "image/heif");
+  gimp_procedure_config_begin_run (config, image, run_mode, args);
 
   switch (run_mode)
     {
@@ -499,14 +498,23 @@ heif_save (GimpProcedure        *procedure,
 
   if (status == GIMP_PDB_SUCCESS)
     {
+      GimpMetadataSaveFlags metadata_flags;
+
+      metadata = gimp_image_metadata_save_prepare (image, "image/heif", &metadata_flags);
+
       if (! save_image (file, image, drawables[0], G_OBJECT (config),
                         &error, heif_compression_HEVC, metadata))
         {
           status = GIMP_PDB_EXECUTION_ERROR;
         }
+
+      if (metadata)
+        {
+          g_object_unref (metadata);
+        }
     }
 
-  gimp_procedure_config_end_export (config, image, file, status);
+  gimp_procedure_config_end_run (config, status);
   g_object_unref (config);
 
   if (export == GIMP_EXPORT_EXPORT)
@@ -539,8 +547,7 @@ heif_av1_save (GimpProcedure        *procedure,
   gegl_init (NULL, NULL);
 
   config = gimp_procedure_create_config (procedure);
-  metadata = gimp_procedure_config_begin_export (config, image, run_mode,
-                                                 args, "image/avif");
+  gimp_procedure_config_begin_run (config, image, run_mode, args);
 
   switch (run_mode)
     {
@@ -580,14 +587,23 @@ heif_av1_save (GimpProcedure        *procedure,
 
   if (status == GIMP_PDB_SUCCESS)
     {
+      GimpMetadataSaveFlags metadata_flags;
+
+      metadata = gimp_image_metadata_save_prepare (image, "image/avif", &metadata_flags);
+
       if (! save_image (file, image, drawables[0], G_OBJECT (config),
                         &error, heif_compression_AV1, metadata))
         {
           status = GIMP_PDB_EXECUTION_ERROR;
         }
+
+      if (metadata)
+        {
+          g_object_unref (metadata);
+        }
     }
 
-  gimp_procedure_config_end_export (config, image, file, status);
+  gimp_procedure_config_end_run (config, status);
   g_object_unref (config);
 
   if (export == GIMP_EXPORT_EXPORT)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]