GVariant *default_value;
} GSettingsKeyInfo;
+static inline void
+endian_fixup (GVariant **value)
+{
+#if G_BYTE_ORDER == G_BIG_ENDIAN
+ GVariant *tmp;
+
+ tmp = g_variant_byteswap (*value);
+ g_variant_unref (*value);
+ *value = tmp;
+#endif
+}
+
static void
g_settings_get_key_info (GSettingsKeyInfo *info,
GSettings *settings,
iter = g_settings_schema_get_value (settings->priv->schema, key);
info->default_value = g_variant_iter_next_value (iter);
+ endian_fixup (&info->default_value);
info->type = g_variant_get_type (info->default_value);
info->settings = g_object_ref (settings);
info->key = g_intern_string (key);
case 'r':
g_variant_get (data, "(**)", &info->minimum, &info->maximum);
+ endian_fixup (&info->minimum);
+ endian_fixup (&info->maximum);
break;
default:
const gchar *result = NULL;
GVariant *value;
- if ((value = gvdb_table_get_value (schema->priv->table, key)))
+ if ((value = gvdb_table_get_raw_value (schema->priv->table, key)))
{
result = g_variant_get_string (value, NULL);
g_variant_unref (value);
if G_UNLIKELY (value == NULL)
g_error ("schema does not contain a key named '%s'", key);
-#if G_BYTE_ORDER == G_BIG_ENDIAN
- {
- GVariant *tmp;
-
- tmp = g_variant_byteswap (value);
- g_variant_unref (value);
- value = tmp;
- }
-#endif
-
iter = g_variant_iter_new (value);
g_variant_unref (value);