From 8c0a8a6d9bfaa9299eca9a019589f0459b5142f7 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 18 Jun 2021 11:04:03 +0200 Subject: libnm: change "nm_sett_info_propert_type_dcb_au" to use gprop_type for to_dbus_fcn() --- src/libnm-core-impl/nm-setting-dcb.c | 16 ++++------------ src/libnm-core-impl/nm-setting.c | 7 +++++++ src/libnm-core-impl/tests/test-setting.c | 3 +++ src/libnm-core-intern/nm-core-internal.h | 1 + 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/libnm-core-impl/nm-setting-dcb.c b/src/libnm-core-impl/nm-setting-dcb.c index 57fe1da029..f9602c3bbf 100644 --- a/src/libnm-core-impl/nm-setting-dcb.c +++ b/src/libnm-core-impl/nm-setting-dcb.c @@ -744,14 +744,6 @@ set_gvalue_from_array(GValue *v, uint *a, size_t len) #define SET_GVALUE_FROM_ARRAY(v, a) set_gvalue_from_array(v, a, G_N_ELEMENTS(a)) -static GVariant * -_nm_setting_dcb_uint_array_to_dbus(const GValue *prop_value) -{ - GArray *src = g_value_get_boxed(prop_value); - - return nm_g_variant_new_au((const guint32 *) src->data, src->len); -} - static void _nm_setting_dcb_uint_array_from_dbus(GVariant *dbus_value, GValue *prop_value) { @@ -763,10 +755,10 @@ _nm_setting_dcb_uint_array_from_dbus(GVariant *dbus_value, GValue *prop_value) } static const NMSettInfoPropertType nm_sett_info_propert_type_dcb_au = - NM_SETT_INFO_PROPERT_TYPE_GPROP_INIT(NM_G_VARIANT_TYPE("au"), - .gprop_to_dbus_fcn = _nm_setting_dcb_uint_array_to_dbus, - .gprop_from_dbus_fcn = - _nm_setting_dcb_uint_array_from_dbus, ); + NM_SETT_INFO_PROPERT_TYPE_GPROP_INIT( + NM_G_VARIANT_TYPE("au"), + .typdata_to_dbus.gprop_type = NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_GARRAY_UINT, + .gprop_from_dbus_fcn = _nm_setting_dcb_uint_array_from_dbus, ); /*****************************************************************************/ diff --git a/src/libnm-core-impl/nm-setting.c b/src/libnm-core-impl/nm-setting.c index bb22b16162..d1e706e71c 100644 --- a/src/libnm-core-impl/nm-setting.c +++ b/src/libnm-core-impl/nm-setting.c @@ -547,6 +547,7 @@ _nm_setting_property_to_dbus_fcn_gprop(const NMSettInfoSetting * s nm_auto_unset_gvalue GValue prop_value = { 0, }; + GArray *tmp_array; nm_assert(property->param_spec); @@ -570,6 +571,12 @@ _nm_setting_property_to_dbus_fcn_gprop(const NMSettInfoSetting * s return g_variant_new_int32(g_value_get_enum(&prop_value)); case NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_FLAGS: return g_variant_new_uint32(g_value_get_flags(&prop_value)); + case NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_GARRAY_UINT: + G_STATIC_ASSERT_EXPR(sizeof(guint) == sizeof(guint32)); + nm_assert(G_VALUE_HOLDS(&prop_value, G_TYPE_ARRAY)); + tmp_array = g_value_get_boxed(&prop_value); + nm_assert(tmp_array); + return nm_g_variant_new_au((const guint32 *) tmp_array->data, tmp_array->len); } return nm_assert_unreachable_val(NULL); diff --git a/src/libnm-core-impl/tests/test-setting.c b/src/libnm-core-impl/tests/test-setting.c index 6ee3c19508..4231539bfb 100644 --- a/src/libnm-core-impl/tests/test-setting.c +++ b/src/libnm-core-impl/tests/test-setting.c @@ -4385,6 +4385,9 @@ test_setting_metadata(void) case NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_FLAGS: g_assert(g_type_is_a (sip->param_spec->value_type, G_TYPE_FLAGS)); goto check_done; + case NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_GARRAY_UINT: + g_assert(sip->param_spec->value_type == G_TYPE_ARRAY); + goto check_done; case NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_DEFAULT: goto check_done; } diff --git a/src/libnm-core-intern/nm-core-internal.h b/src/libnm-core-intern/nm-core-internal.h index bf40869270..6a5cd64076 100644 --- a/src/libnm-core-intern/nm-core-internal.h +++ b/src/libnm-core-intern/nm-core-internal.h @@ -676,6 +676,7 @@ typedef enum _nm_packed { NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_BYTES, NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_ENUM, NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_FLAGS, + NM_SETTING_PROPERTY_TO_DBUS_FCN_GPROP_TYPE_GARRAY_UINT, } NMSettingPropertyToDBusFcnGPropType; typedef struct { -- cgit v1.2.3