summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-09-28 16:59:22 -0400
committerMatthias Clasen <mclasen@redhat.com>2021-09-28 17:48:50 -0400
commite99ac8f6d831a3fccaffd255bf229a5efe633870 (patch)
tree0ce2b9d446a3b01a8a5cbbe5a9ef33078188dbb9
parentf5db5018790d66661bc5c03af9b6da38fe73e043 (diff)
downloadgtk+-e99ac8f6d831a3fccaffd255bf229a5efe633870.tar.gz
builder: Simplify parameter collection
This avoids setting the GValue only to toss it at the end of the loop body. Instead, we can just do nothing if this property isn't interesting to us.
-rw-r--r--gtk/gtkbuilder.c24
1 files changed, 11 insertions, 13 deletions
diff --git a/gtk/gtkbuilder.c b/gtk/gtkbuilder.c
index fef468e8bb..ed90fd7b99 100644
--- a/gtk/gtkbuilder.c
+++ b/gtk/gtkbuilder.c
@@ -539,10 +539,19 @@ gtk_builder_get_parameters (GtkBuilder *builder,
PropertyInfo *prop = g_ptr_array_index (properties, i);
const char *property_name = prop->pspec->name;
GValue property_value = G_VALUE_INIT;
+ ObjectProperties *params;
if (prop->applied)
continue;
+ if ((prop->pspec->flags & filter_flags) != 0)
+ params = filtered_parameters;
+ else
+ params = parameters;
+
+ if (!params)
+ continue;
+
if (prop->value)
{
g_value_init (&property_value, G_PARAM_SPEC_VALUE_TYPE (prop->pspec));
@@ -616,19 +625,8 @@ gtk_builder_get_parameters (GtkBuilder *builder,
* copy it to one of the two arrays, or unset it.
*/
g_assert (G_IS_VALUE (&property_value));
-
- if ((prop->pspec->flags & filter_flags) != 0 && filtered_parameters)
- {
- object_properties_add (filtered_parameters, property_name, &property_value);
- prop->applied = TRUE;
- }
- else if ((prop->pspec->flags & filter_flags) == 0 && parameters)
- {
- object_properties_add (parameters, property_name, &property_value);
- prop->applied = TRUE;
- }
- else
- g_value_unset (&property_value);
+ object_properties_add (params, property_name, &property_value);
+ prop->applied = TRUE;
}
}