[mutter/gbsneto/silence-warnings: 1/3] clutter: Drop g_object_newv from ClutterScriptParser



commit 9c5dc9643fc63269ef974148e3cf90125a8d0ea0
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Thu Nov 8 15:22:40 2018 -0200

    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().

 clutter/clutter/clutter-script-parser.c | 24 +++++++++++++++++++-----
 1 file changed, 19 insertions(+), 5 deletions(-)
---
diff --git a/clutter/clutter/clutter-script-parser.c b/clutter/clutter/clutter-script-parser.c
index db8b50ad8..4959703be 100644
--- a/clutter/clutter/clutter-script-parser.c
+++ b/clutter/clutter/clutter-script-parser.c
@@ -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,
                                              &params);
 
-      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 (&param->value);
         }
 
+      g_array_free (param_values, FALSE);
       g_array_free (params, TRUE);
    }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]