[gimp] libgimp: add preliminary function gimp_run_procedure_with_array()
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] libgimp: add preliminary function gimp_run_procedure_with_array()
- Date: Mon, 29 Jul 2019 10:55:06 +0000 (UTC)
commit 9a547c14d5630b5ae9316a28e3b2600d175d9912
Author: Michael Natterer <mitch gimp org>
Date: Mon Jul 29 12:53:27 2019 +0200
libgimp: add preliminary function gimp_run_procedure_with_array()
which takes and returns GimpValueArrays. This or something similar is
the new central function for running core procedures. Use the new
function from gimp_run_procedure2().
libgimp/gimp.c | 44 +++++++++++++++++++++++++++++---------------
libgimp/gimp.h | 8 ++++++++
2 files changed, 37 insertions(+), 15 deletions(-)
---
diff --git a/libgimp/gimp.c b/libgimp/gimp.c
index 7316b73d33..c710cf2820 100644
--- a/libgimp/gimp.c
+++ b/libgimp/gimp.c
@@ -1474,18 +1474,39 @@ gimp_run_procedure2 (const gchar *name,
gint n_params,
const GimpParam *params)
{
- GPProcRun proc_run;
- GPProcReturn *proc_return;
- GimpValueArray *arguments;
- GimpValueArray *return_values;
- GimpWireMessage msg;
- GimpParam *return_vals;
+ GimpValueArray *arguments;
+ GimpValueArray *return_values;
+ GimpParam *return_vals;
g_return_val_if_fail (name != NULL, NULL);
g_return_val_if_fail (n_return_vals != NULL, NULL);
arguments = _gimp_params_to_value_array (params, n_params, FALSE);
+ return_values = gimp_run_procedure_with_array (name, arguments);
+
+ gimp_value_array_unref (arguments);
+
+ *n_return_vals = gimp_value_array_length (return_values);
+ return_vals = _gimp_value_array_to_params (return_values, TRUE);
+
+ gimp_value_array_unref (return_values);
+
+ return return_vals;
+}
+
+GimpValueArray *
+gimp_run_procedure_with_array (const gchar *name,
+ GimpValueArray *arguments)
+{
+ GPProcRun proc_run;
+ GPProcReturn *proc_return;
+ GimpWireMessage msg;
+ GimpValueArray *return_values;
+
+ g_return_val_if_fail (name != NULL, NULL);
+ g_return_val_if_fail (arguments != NULL, NULL);
+
proc_run.name = (gchar *) name;
proc_run.nparams = gimp_value_array_length (arguments);
proc_run.params = _gimp_value_array_to_gp_params (arguments, FALSE);
@@ -1494,9 +1515,6 @@ gimp_run_procedure2 (const gchar *name,
if (! gp_proc_run_write (_writechannel, &proc_run, NULL))
gimp_quit ();
- g_free (proc_run.params);
- gimp_value_array_unref (arguments);
-
gimp_read_expect_msg (&msg, GP_PROC_RETURN);
gp_unlock ();
@@ -1507,15 +1525,11 @@ gimp_run_procedure2 (const gchar *name,
proc_return->nparams,
TRUE, FALSE);
- *n_return_vals = gimp_value_array_length (return_values);
- return_vals = _gimp_value_array_to_params (return_values, TRUE);
+ gimp_wire_destroy (&msg);
gimp_set_pdb_error (return_values);
- gimp_value_array_unref (return_values);
- gimp_wire_destroy (&msg);
-
- return return_vals;
+ return return_values;
}
/**
diff --git a/libgimp/gimp.h b/libgimp/gimp.h
index ff5c847b86..bb52b16daf 100644
--- a/libgimp/gimp.h
+++ b/libgimp/gimp.h
@@ -411,6 +411,14 @@ GimpParam * gimp_run_procedure2 (const gchar *name,
gint n_params,
const GimpParam *params);
+/* Run a procedure in the procedure database. The parameters are
+ * specified as a GimpValueArray, so are the return values.
+ *
+ * FIXME this API is not final!
+ */
+GimpValueArray * gimp_run_procedure_with_array (const gchar *name,
+ GimpValueArray *arguments);
+
/* Destroy the an array of parameters. This is useful for
* destroying the return values returned by a call to
* 'gimp_run_procedure'.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]