From 18b0ba499cd2b4485c40f39c654a33a8c1059b56 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Mon, 2 Jul 2012 13:20:21 -0500 Subject: [PATCH] libnm-util: ensure address/route types are boxed on glib < 2.26 --- include/nm-glib-compat.h | 20 ++++++++++++++++++++ libnm-util/nm-setting-ip4-config.c | 5 +++-- libnm-util/nm-setting-ip6-config.c | 3 +-- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/include/nm-glib-compat.h b/include/nm-glib-compat.h index 3b772f4f1d..f9c1ae495d 100644 --- a/include/nm-glib-compat.h +++ b/include/nm-glib-compat.h @@ -25,6 +25,7 @@ #include +#include #if !GLIB_CHECK_VERSION(2,31,0) #define g_value_set_schar g_value_set_char @@ -54,4 +55,23 @@ #endif +#ifndef G_DEFINE_BOXED_TYPE +#define G_DEFINE_BOXED_TYPE(t,p,d,f) \ +GType \ +p##_get_type (void) \ +{ \ + static volatile gsize g_define_type_id__volatile = 0; \ + \ + if (g_once_init_enter (&g_define_type_id__volatile)) { \ + GType g_define_type_id = \ + g_boxed_type_register_static( \ + g_intern_static_string(#t), \ + (GBoxedCopyFunc) d, \ + (GBoxedFreeFunc) f); \ + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \ + } \ + return g_define_type_id__volatile; \ +} +#endif + #endif /* NM_GLIB_COMPAT_H */ diff --git a/libnm-util/nm-setting-ip4-config.c b/libnm-util/nm-setting-ip4-config.c index 54cf03647d..5dc9199b5e 100644 --- a/libnm-util/nm-setting-ip4-config.c +++ b/libnm-util/nm-setting-ip4-config.c @@ -30,6 +30,9 @@ #include "nm-param-spec-specialized.h" #include "nm-utils.h" #include "nm-dbus-glib-types.h" +#include "nm-glib-compat.h" + + /** * SECTION:nm-setting-ip4-config @@ -57,10 +60,8 @@ nm_setting_ip4_config_error_quark (void) return quark; } -#if GLIB_CHECK_VERSION(2,26,0) G_DEFINE_BOXED_TYPE (NMIP4Address, nm_ip4_address, nm_ip4_address_dup, nm_ip4_address_unref) G_DEFINE_BOXED_TYPE (NMIP4Route, nm_ip4_route, nm_ip4_route_dup, nm_ip4_route_unref) -#endif G_DEFINE_TYPE (NMSettingIP4Config, nm_setting_ip4_config, NM_TYPE_SETTING) diff --git a/libnm-util/nm-setting-ip6-config.c b/libnm-util/nm-setting-ip6-config.c index 67c101dc11..c6a84f8e17 100644 --- a/libnm-util/nm-setting-ip6-config.c +++ b/libnm-util/nm-setting-ip6-config.c @@ -29,6 +29,7 @@ #include "nm-param-spec-specialized.h" #include "nm-utils.h" #include "nm-dbus-glib-types.h" +#include "nm-glib-compat.h" /** * SECTION:nm-setting-ip6-config @@ -56,10 +57,8 @@ nm_setting_ip6_config_error_quark (void) return quark; } -#if GLIB_CHECK_VERSION(2,26,0) G_DEFINE_BOXED_TYPE (NMIP6Address, nm_ip6_address, nm_ip6_address_dup, nm_ip6_address_unref) G_DEFINE_BOXED_TYPE (NMIP6Route, nm_ip6_route, nm_ip6_route_dup, nm_ip6_route_unref) -#endif G_DEFINE_TYPE (NMSettingIP6Config, nm_setting_ip6_config, NM_TYPE_SETTING)