plug-ins: Fix call to internal GIH export after 443947c6

After 443947c6, the image layers were being passed as a
GList to the internal GIH export code rather than GimpDrawable
pointers.
This commit is contained in:
Alx Sa 2024-05-11 19:05:07 +00:00
parent 0471439ed4
commit 1bb515eb64
1 changed files with 18 additions and 10 deletions

View File

@ -254,7 +254,7 @@ gih_export (GimpProcedure *procedure,
{ {
GimpPDBStatusType status = GIMP_PDB_SUCCESS; GimpPDBStatusType status = GIMP_PDB_SUCCESS;
GimpExportReturn export = GIMP_EXPORT_IGNORE; GimpExportReturn export = GIMP_EXPORT_IGNORE;
GList *drawables = NULL; GList *layers = NULL;
gint n_drawables; gint n_drawables;
GimpParasite *parasite; GimpParasite *parasite;
GimpImage *orig_image; GimpImage *orig_image;
@ -384,8 +384,8 @@ gih_export (GimpProcedure *procedure,
goto out; goto out;
} }
} }
drawables = gimp_image_list_layers (image); layers = gimp_image_list_layers (image);
n_drawables = g_list_length (drawables); n_drawables = g_list_length (layers);
g_object_get (config, g_object_get (config,
"spacing", &spacing, "spacing", &spacing,
@ -414,17 +414,24 @@ gih_export (GimpProcedure *procedure,
if (status == GIMP_PDB_SUCCESS) if (status == GIMP_PDB_SUCCESS)
{ {
GimpProcedure *procedure; GimpProcedure *procedure;
GimpValueArray *save_retvals; GimpValueArray *save_retvals;
GimpObjectArray *drawables_array; GimpDrawable **drawables = NULL;
gchar *paramstring; GimpObjectArray *drawables_array;
GList *iter;
gint i;
gchar *paramstring;
paramstring = gimp_pixpipe_params_build (&gihparams); paramstring = gimp_pixpipe_params_build (&gihparams);
drawables = g_new (GimpDrawable *, n_drawables);
for (iter = layers, i = 0; iter; iter = iter->next, i++)
drawables[i] = iter->data;
drawables_array = gimp_object_array_new (GIMP_TYPE_DRAWABLE, (GObject **) drawables, drawables_array = gimp_object_array_new (GIMP_TYPE_DRAWABLE, (GObject **) drawables,
n_drawables, FALSE); n_drawables, FALSE);
procedure = gimp_pdb_lookup_procedure (gimp_get_pdb (), procedure = gimp_pdb_lookup_procedure (gimp_get_pdb (),
"file-gih-export-internal"); "file-gih-export-internal");
save_retvals = gimp_procedure_run (procedure, save_retvals = gimp_procedure_run (procedure,
"image", image, "image", image,
"num-drawables", n_drawables, "num-drawables", n_drawables,
@ -434,6 +441,7 @@ gih_export (GimpProcedure *procedure,
"name", description, "name", description,
"params", paramstring, "params", paramstring,
NULL); NULL);
g_free (drawables);
gimp_object_array_free (drawables_array); gimp_object_array_free (drawables_array);
if (GIMP_VALUES_GET_ENUM (save_retvals, 0) == GIMP_PDB_SUCCESS) if (GIMP_VALUES_GET_ENUM (save_retvals, 0) == GIMP_PDB_SUCCESS)
@ -467,7 +475,7 @@ gih_export (GimpProcedure *procedure,
if (export == GIMP_EXPORT_EXPORT) if (export == GIMP_EXPORT_EXPORT)
gimp_image_delete (image); gimp_image_delete (image);
g_list_free (drawables); g_list_free (layers);
return gimp_procedure_new_return_values (procedure, status, error); return gimp_procedure_new_return_values (procedure, status, error);
} }