[clutter] model: Drop GValueArray usage
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [clutter] model: Drop GValueArray usage
- Date: Mon, 6 Feb 2012 15:36:47 +0000 (UTC)
commit ce9564e5584381794ea6b8fae379ad2c3b499bef
Author: Emmanuele Bassi <ebassi linux intel com>
Date: Mon Feb 6 15:34:13 2012 +0000
model: Drop GValueArray usage
We can use a plain C array of GValues when deserializing a ClutterModel
implementation from a ClutterScript description.
clutter/clutter-model.c | 49 ++++++++++++++++++++++++++--------------------
1 files changed, 28 insertions(+), 21 deletions(-)
---
diff --git a/clutter/clutter-model.c b/clutter/clutter-model.c
index 346b34f..1893075 100644
--- a/clutter/clutter-model.c
+++ b/clutter/clutter-model.c
@@ -652,39 +652,41 @@ clutter_model_set_custom_property (ClutterScriptable *scriptable,
for (l = rows; l; l = l->next)
{
JsonNode *node = l->data;
- guint *columns, i, n_values = 0;
- GValueArray *values;
+ guint *columns = NULL, i, n_values = 0;
+ GValue *values = NULL;
if (JSON_NODE_TYPE (node) == JSON_NODE_ARRAY)
{
JsonArray *array = json_node_get_array (node);
+
if (json_array_get_length (array) != n_columns)
{
g_warning ("Row %d contains the wrong count of columns",
g_slist_position (rows, l) + 1);
- row++;
+ row += 1;
continue;
}
+ /* array more requires all columns */
n_values = n_columns;
+
columns = g_new (guint, n_values);
- values = g_value_array_new (n_values);
+ values = g_new0 (GValue, n_values);
for (i = 0; i < n_values; i++)
{
GType column_type;
const gchar *column_name;
- GValue v = { 0, };
column_type = clutter_model_get_column_type (model, i);
column_name = clutter_model_get_column_name (model, i);
+
columns[i] = i;
- g_value_init (&v, column_type);
- _clutter_script_parse_node (script, &v, column_name,
+ g_value_init (&values[i], column_type);
+
+ _clutter_script_parse_node (script, &values[i], column_name,
json_array_get_element (array, i),
NULL);
- g_value_array_append (values, &v);
- g_value_unset (&v);
}
}
else if (JSON_NODE_TYPE (node) == JSON_NODE_OBJECT)
@@ -693,9 +695,11 @@ clutter_model_set_custom_property (ClutterScriptable *scriptable,
GList *members, *m;
guint column = 0;
+ /* object mode does not require all columns */
n_values = json_object_get_size (object);
+
columns = g_new (guint, n_values);
- values = g_value_array_new (n_values);
+ values = g_new0 (GValue, n_values);
members = json_object_get_members (object);
for (m = members; m; m = m->next)
@@ -712,35 +716,38 @@ clutter_model_set_custom_property (ClutterScriptable *scriptable,
JsonNode *member;
GType col_type;
const gchar *col_name;
- GValue v = { 0, };
+
+ member = json_object_get_member (object, mname);
col_type = clutter_model_get_column_type (model, i);
col_name = clutter_model_get_column_name (model, i);
+
columns[column] = i;
- g_value_init (&v, col_type);
- member = json_object_get_member (object, mname);
- _clutter_script_parse_node (script, &v,
+ g_value_init (&values[column], col_type);
+
+ _clutter_script_parse_node (script, &values[column],
col_name, member,
NULL);
- g_value_array_append (values, &v);
- g_value_unset (&v);
break;
}
}
- column++;
+
+ column += 1;
}
}
else
{
- row++;
+ row += 1;
continue;
}
- clutter_model_insertv (model, row, n_values, columns, values->values);
- g_value_array_free (values);
+ clutter_model_insertv (model, row, n_values, columns, values);
+
+ g_free (values);
g_free (columns);
json_node_free (node);
- row++;
+
+ row += 1;
}
g_slist_free (rows);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]