From baae7287be4fc7584018ec25b1f01e01cfd12763 Mon Sep 17 00:00:00 2001 From: Jehan Date: Thu, 29 Feb 2024 16:33:32 +0100 Subject: [PATCH] libgimp: allow to run gimp_procedure_run_config() with no config object. This is the equivalent to run the procedure with its defaults. --- libgimp/gimpprocedure.c | 20 ++++++++++++++++---- libgimp/tests/libgimp-run-c-test.sh | 2 +- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/libgimp/gimpprocedure.c b/libgimp/gimpprocedure.c index 7d63b64684..3fbb29dc1b 100644 --- a/libgimp/gimpprocedure.c +++ b/libgimp/gimpprocedure.c @@ -1934,8 +1934,8 @@ gimp_procedure_run_valist (GimpProcedure *procedure, /** * gimp_procedure_run_config: (rename-to gimp_procedure_run) - * @procedure: the [class@gimp.Procedure] to run. - * @config: the @procedure's arguments. + * @procedure: the [class@gimp.Procedure] to run. + * @config: (nullable): the @procedure's arguments. * * Runs @procedure, calling the run_func given in [ctor@Procedure.new]. * @@ -1943,6 +1943,8 @@ gimp_procedure_run_valist (GimpProcedure *procedure, * [method@Gimp.Procedure.create_config] then set any argument you wish * to change from defaults with [method@GObject.Object.set]. * + * If @config is %NULL, the default arguments of @procedure will be used. + * * Returns: (transfer full): The @procedure's return values. * * Since: 3.0 @@ -1953,10 +1955,17 @@ gimp_procedure_run_config (GimpProcedure *procedure, { GimpValueArray *return_vals; GimpValueArray *args; + gboolean free_config = FALSE; g_return_val_if_fail (GIMP_IS_PROCEDURE (procedure), NULL); - g_return_val_if_fail (GIMP_IS_PROCEDURE_CONFIG (config), NULL); - g_return_val_if_fail (gimp_procedure_config_get_procedure (config) == procedure, NULL); + g_return_val_if_fail (config == NULL || GIMP_IS_PROCEDURE_CONFIG (config), NULL); + g_return_val_if_fail (config == NULL || gimp_procedure_config_get_procedure (config) == procedure, NULL); + + if (config == NULL) + { + config = gimp_procedure_create_config (procedure); + free_config = TRUE; + } args = gimp_procedure_new_arguments (procedure); _gimp_procedure_config_get_values (config, args); @@ -1965,6 +1974,9 @@ gimp_procedure_run_config (GimpProcedure *procedure, gimp_value_array_unref (args); + if (free_config) + g_object_unref (config); + return return_vals; } diff --git a/libgimp/tests/libgimp-run-c-test.sh b/libgimp/tests/libgimp-run-c-test.sh index ffd8dac4db..eda39c0a97 100644 --- a/libgimp/tests/libgimp-run-c-test.sh +++ b/libgimp/tests/libgimp-run-c-test.sh @@ -8,6 +8,6 @@ TEST_NAME=$3 cmd="import os; import sys; sys.path.insert(0, '$SRC_DIR'); from pygimp.utils import gimp_c_assert;" cmd="$cmd proc = Gimp.get_pdb().lookup_procedure('$TEST_NAME'); gimp_c_assert('$TEST_FILE', 'Test PDB procedure does not exist: {}'.format('$TEST_NAME'), proc is not None);" -cmd="$cmd result = proc.run(proc.create_config());" +cmd="$cmd result = proc.run(None);" cmd="$cmd print('SUCCESS') if result.index(0) == Gimp.PDBStatusType.SUCCESS else gimp_c_assert('$TEST_FILE', result.index(1), False);" echo "$cmd" | "$GIMP_EXE" -nis --batch-interpreter "python-fu-eval" -b - --quit