mirror of https://github.com/GNOME/gimp.git
libgimp: make sure GimpProcedures always get all their arguments
gimp_procedure_run(): fill the value array with default values so a procedure's run callback always gets a complete value array. No more number-of-arguments checking in any new-style plug-in.
This commit is contained in:
parent
5cd09366e1
commit
5b8deb68b4
|
@ -922,6 +922,7 @@ gimp_procedure_run (GimpProcedure *procedure,
|
||||||
{
|
{
|
||||||
GimpValueArray *return_vals;
|
GimpValueArray *return_vals;
|
||||||
GError *error = NULL;
|
GError *error = NULL;
|
||||||
|
gint i;
|
||||||
|
|
||||||
g_return_val_if_fail (GIMP_IS_PROCEDURE (procedure), NULL);
|
g_return_val_if_fail (GIMP_IS_PROCEDURE (procedure), NULL);
|
||||||
g_return_val_if_fail (args != NULL, NULL);
|
g_return_val_if_fail (args != NULL, NULL);
|
||||||
|
@ -939,6 +940,18 @@ gimp_procedure_run (GimpProcedure *procedure,
|
||||||
return return_vals;
|
return return_vals;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* add missing args with default values */
|
||||||
|
for (i = gimp_value_array_length (args); i < procedure->priv->n_args; i++)
|
||||||
|
{
|
||||||
|
GParamSpec *pspec = procedure->priv->args[i];
|
||||||
|
GValue value = G_VALUE_INIT;
|
||||||
|
|
||||||
|
g_value_init (&value, G_PARAM_SPEC_VALUE_TYPE (pspec));
|
||||||
|
g_param_value_set_default (pspec, &value);
|
||||||
|
gimp_value_array_append (args, &value);
|
||||||
|
g_value_unset (&value);
|
||||||
|
}
|
||||||
|
|
||||||
/* call the procedure */
|
/* call the procedure */
|
||||||
return_vals = procedure->priv->run_func (procedure, args,
|
return_vals = procedure->priv->run_func (procedure, args,
|
||||||
procedure->priv->run_data);
|
procedure->priv->run_data);
|
||||||
|
|
Loading…
Reference in New Issue