clutter: Drop g_object_newv from ClutterScriptParser
Build an additional set of (GStrv, GValue[]) and pass it to the non-deprecated g_object_new_with_properties().
This commit is contained in:
parent
cbf6e74915
commit
3d23ecc456
@ -2208,8 +2208,9 @@ _clutter_script_construct_object (ClutterScript *script,
|
||||
}
|
||||
else
|
||||
{
|
||||
g_autoptr (GPtrArray) param_names = NULL;
|
||||
GArray *param_values;
|
||||
GList *properties = oinfo->properties;
|
||||
GParameter *parameters;
|
||||
|
||||
/* every other object: first, we get the construction parameters */
|
||||
oinfo->properties =
|
||||
@ -2219,10 +2220,22 @@ _clutter_script_construct_object (ClutterScript *script,
|
||||
properties,
|
||||
¶ms);
|
||||
|
||||
parameters = (GParameter *) (void *) params->data;
|
||||
oinfo->object = g_object_newv (oinfo->gtype,
|
||||
params->len,
|
||||
parameters);
|
||||
/* Convert GParameter → (GStrv, GValue[]) */
|
||||
param_names = g_ptr_array_sized_new (params->len);
|
||||
param_values = g_array_sized_new (TRUE, FALSE, sizeof (GValue), params->len);
|
||||
for (i = 0; i < params->len; i++)
|
||||
{
|
||||
GParameter *param = &g_array_index (params, GParameter, i);
|
||||
|
||||
g_ptr_array_add (param_names, (gchar *) param->name);
|
||||
g_array_append_val (param_values, param->value);
|
||||
}
|
||||
g_ptr_array_add (param_names, NULL);
|
||||
|
||||
oinfo->object = g_object_new_with_properties (oinfo->gtype,
|
||||
params->len,
|
||||
(const gchar **) param_names->pdata,
|
||||
(const GValue *) param_values->data);
|
||||
|
||||
/* by sinking the floating reference, we make sure that the reference
|
||||
* count is correct whether the object is referenced from somewhere
|
||||
@ -2238,6 +2251,7 @@ _clutter_script_construct_object (ClutterScript *script,
|
||||
g_value_unset (¶m->value);
|
||||
}
|
||||
|
||||
g_array_free (param_values, FALSE);
|
||||
g_array_free (params, TRUE);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user