From 26e22b2ede0eb0fdfbe3d96189cb2aa196da83f8 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Thu, 25 Feb 2010 10:22:36 +0000 Subject: [PATCH] Conditionally use G_VALUE_COLLECT_INIT() macro GLib 2.24 (but starting from the 2.23.2 unstable release) added a new macro for collecting GValues from a va_list. The newly added G_VALUE_COLLECT_INIT() macro should be used in place of initializing the GValue and calling G_VALUE_COLLECT(), and improves the collection performances by avoiding multiple checks, free and initialization calls. --- clutter/clutter-animation.c | 8 ++++++++ clutter/clutter-animator.c | 7 ++++++- clutter/clutter-box.c | 7 +++++++ clutter/clutter-container.c | 7 +++++++ clutter/clutter-interval.c | 10 ++++++++++ clutter/clutter-layout-manager.c | 7 +++++++ 6 files changed, 45 insertions(+), 1 deletion(-) diff --git a/clutter/clutter-animation.c b/clutter/clutter-animation.c index 1e9bca0..6362d83 100644 --- a/clutter/clutter-animation.c +++ b/clutter/clutter-animation.c @@ -1837,8 +1837,16 @@ clutter_animation_setup_valist (ClutterAnimation *animation, break; } +#if GLIB_CHECK_VERSION (2, 23, 2) + G_VALUE_COLLECT_INIT (&file, G_PARAM_SPEC_VALUE_TYPE (pspec), + var_args, 0, + &error); +#else + /* this is the same as G_VALUE_COLLECT_INIT(), but slower */ g_value_init (&final, G_PARAM_SPEC_VALUE_TYPE (pspec)); G_VALUE_COLLECT (&final, var_args, 0, &error); +#endif /* GLIB_CHECK_VERSION (2, 23, 2) */ + if (error) { g_warning ("%s: %s", G_STRLOC, error); diff --git a/clutter/clutter-animator.c b/clutter/clutter-animator.c index 679bf14..9725b2c 100644 --- a/clutter/clutter-animator.c +++ b/clutter/clutter-animator.c @@ -961,9 +961,14 @@ clutter_animator_set (ClutterAnimator *animator, break; } - /* FIXME - Depend on GLib 2.24 and use G_VALUE_COLLECT_INIT() */ +#if GLIB_CHECK_VERSION (2, 23, 2) + G_VALUE_COLLECT_INIT (&value, G_PARAM_SPEC_VALUE_TYPE (pspec), + args, 0, + &error); +#else g_value_init (&value, G_PARAM_SPEC_VALUE_TYPE (pspec)); G_VALUE_COLLECT (&value, args, 0, &error); +#endif /* GLIB_CHECK_VERSION (2, 23, 2) */ if (error) { diff --git a/clutter/clutter-box.c b/clutter/clutter-box.c index 837b0e7..96436f3 100644 --- a/clutter/clutter-box.c +++ b/clutter/clutter-box.c @@ -726,8 +726,15 @@ clutter_box_set_property_valist (ClutterBox *box, break; } +#if GLIB_CHECK_VERSION (2, 23, 2) + G_VALUE_COLLECT_INIT (&value, G_PARAM_SPEC_VALUE_TYPE (pspec), + var_args, 0, + &error); +#else g_value_init (&value, G_PARAM_SPEC_VALUE_TYPE (pspec)); G_VALUE_COLLECT (&value, var_args, 0, &error); +#endif /* GLIB_CHECK_VERSION (2, 23, 2) */ + if (error) { g_warning ("%s: %s", G_STRLOC, error); diff --git a/clutter/clutter-container.c b/clutter/clutter-container.c index ec714a0..fc69fbc 100644 --- a/clutter/clutter-container.c +++ b/clutter/clutter-container.c @@ -1019,8 +1019,15 @@ clutter_container_child_set (ClutterContainer *container, break; } +#if GLIB_CHECK_VERSION (2, 23, 2) + G_VALUE_COLLECT_INIT (&value, G_PARAM_SPEC_VALUE_TYPE (pspec), + var_args, 0, + &error); +#else g_value_init (&value, G_PARAM_SPEC_VALUE_TYPE (pspec)); G_VALUE_COLLECT (&value, var_args, 0, &error); +#endif /* GLIB_CHECK_VERSION (2, 23, 2) */ + if (error) { /* we intentionally leak the GValue because it might diff --git a/clutter/clutter-interval.c b/clutter/clutter-interval.c index 3901e8f..ef699be 100644 --- a/clutter/clutter-interval.c +++ b/clutter/clutter-interval.c @@ -422,8 +422,13 @@ clutter_interval_set_interval_valist (ClutterInterval *interval, gchar *error; /* initial value */ +#if GLIB_CHECK_VERSION (2, 23, 2) + G_VALUE_COLLECT_INIT (&value, gtype, var_args, 0, &error); +#else g_value_init (&value, gtype); G_VALUE_COLLECT (&value, var_args, 0, &error); +#endif /* GLIB_CHECK_VERSION (2, 23, 2) */ + if (error) { g_warning ("%s: %s", G_STRLOC, error); @@ -440,8 +445,13 @@ clutter_interval_set_interval_valist (ClutterInterval *interval, g_value_unset (&value); /* final value */ +#if GLIB_CHECK_VERSION (2, 23, 2) + G_VALUE_COLLECT_INIT (&value, gtype, var_args, 0, &error); +#else g_value_init (&value, gtype); G_VALUE_COLLECT (&value, var_args, 0, &error); +#endif /* GLIB_CHECK_VERSION (2, 23, 2) */ + if (error) { g_warning ("%s: %s", G_STRLOC, error); diff --git a/clutter/clutter-layout-manager.c b/clutter/clutter-layout-manager.c index 850c391..5dee44e 100644 --- a/clutter/clutter-layout-manager.c +++ b/clutter/clutter-layout-manager.c @@ -871,8 +871,15 @@ clutter_layout_manager_child_set (ClutterLayoutManager *manager, break; } +#if GLIB_CHECK_VERSION (2, 23, 2) + G_VALUE_COLLECT_INIT (&value, G_PARAM_SPEC_VALUE_TYPE (pspec), + var_args, 0, + &error); +#else g_value_init (&value, G_PARAM_SPEC_VALUE_TYPE (pspec)); G_VALUE_COLLECT (&value, var_args, 0, &error); +#endif /* GLIB_CHECK_VERSION (2, 23, 2) */ + if (error) { g_warning ("%s: %s", G_STRLOC, error); -- 2.7.4