summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Withnall <philip@tecnocode.co.uk>2021-09-20 12:47:00 +0000
committerPhilip Withnall <philip@tecnocode.co.uk>2021-09-20 12:47:00 +0000
commit3f1a1cdb7811dedc7a5fac87ebacbec877e9c04f (patch)
tree7d49d2def72ca29823780cb775d70e867855c5ad
parent3e57fc4c0276ede57c5d04778892d7de5184bccb (diff)
parent497986cdc1fe9e7f719ca8982b2f7c7942f081c6 (diff)
downloadglib-3f1a1cdb7811dedc7a5fac87ebacbec877e9c04f.tar.gz
Merge branch 'prop-set-speedups' into 'main'
Small optimization for g_object_set See merge request GNOME/glib!2254
-rw-r--r--gobject/gobject.c21
1 files changed, 6 insertions, 15 deletions
diff --git a/gobject/gobject.c b/gobject/gobject.c
index a0685db28..2c62b5aae 100644
--- a/gobject/gobject.c
+++ b/gobject/gobject.c
@@ -1572,15 +1572,9 @@ object_set_property (GObject *object,
{
class->set_property (object, param_id, &tmp_value, pspec);
- if (~pspec->flags & G_PARAM_EXPLICIT_NOTIFY)
- {
- GParamSpec *notify_pspec;
-
- notify_pspec = get_notify_pspec (pspec);
-
- if (notify_pspec != NULL)
- g_object_notify_queue_add (object, nqueue, notify_pspec);
- }
+ if (~pspec->flags & G_PARAM_EXPLICIT_NOTIFY &&
+ pspec->flags & G_PARAM_READABLE)
+ g_object_notify_queue_add (object, nqueue, pspec);
}
g_value_unset (&tmp_value);
}
@@ -2531,17 +2525,14 @@ g_object_getv (GObject *object,
g_object_ref (object);
+ memset (values, 0, n_properties * sizeof (GValue));
+
obj_type = G_OBJECT_TYPE (object);
for (i = 0; i < n_properties; i++)
{
- pspec = g_param_spec_pool_lookup (pspec_pool,
- names[i],
- obj_type,
- TRUE);
+ pspec = g_param_spec_pool_lookup (pspec_pool, names[i], obj_type, TRUE);
if (!g_object_get_is_valid_property (object, pspec, names[i]))
break;
-
- memset (&values[i], 0, sizeof (GValue));
g_value_init (&values[i], pspec->value_type);
object_get_property (object, pspec, &values[i]);
}