diff options
author | Philip Withnall <philip@tecnocode.co.uk> | 2021-09-20 12:47:00 +0000 |
---|---|---|
committer | Philip Withnall <philip@tecnocode.co.uk> | 2021-09-20 12:47:00 +0000 |
commit | 3f1a1cdb7811dedc7a5fac87ebacbec877e9c04f (patch) | |
tree | 7d49d2def72ca29823780cb775d70e867855c5ad | |
parent | 3e57fc4c0276ede57c5d04778892d7de5184bccb (diff) | |
parent | 497986cdc1fe9e7f719ca8982b2f7c7942f081c6 (diff) | |
download | glib-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.c | 21 |
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]); } |