This is an automated email from the git hooks/post-receive script. a l i p u s h e d a c o m m i t t o b r a n c h m a s t e r in repository xfce/xfconf.
commit a4b35157ac9661d40b7d9a384a12dd3b3751fe58 Author: Ali Abdallah <[email protected]> Date: Sat Jul 14 01:53:20 2018 +0200 Use string type for properties that do not map to xfconf. --- gsettings-backend/xfconf-gsettings-backend.c | 57 +++++++++++++++++++++------- 1 file changed, 43 insertions(+), 14 deletions(-) diff --git a/gsettings-backend/xfconf-gsettings-backend.c b/gsettings-backend/xfconf-gsettings-backend.c index ff7d664..15746ea 100644 --- a/gsettings-backend/xfconf-gsettings-backend.c +++ b/gsettings-backend/xfconf-gsettings-backend.c @@ -25,6 +25,8 @@ #include <glib.h> #include "xfconf/xfconf.h" +#include "xfconf/xfconf-private.h" + #include "common/xfconf-gvaluefuncs.h" #include "xfconf-gsettings-backend.h" @@ -102,19 +104,27 @@ xfconf_gsettings_backend_read (GSettingsBackend *backend, return NULL; variant = xfconf_gvalue_to_gvariant (&value); - g_value_unset (&value); + /* Set it as a string type */ if (!g_variant_is_of_type (variant, expected_type)) { + GError *error = NULL; gchar *type_str; type_str = g_variant_type_dup_string (expected_type); - g_critical ("Property '%s' expected type is '%s' => '%s' found!", - key, type_str, g_variant_get_type_string(variant) ); - g_free(type_str); + g_variant_unref(variant); - return NULL; + variant = g_variant_parse (expected_type, g_value_get_string(&value), NULL, NULL, &error); + + if (error) { + g_critical ("Failed to handle property '%s' with expected type '%s' => %s", + key, type_str, error->message); + g_error_free (error); + return (NULL); + } + g_free(type_str); } + g_value_unset (&value); return variant; } @@ -152,23 +162,33 @@ xfconf_gsettings_backend_write_full (GSettingsBackend *backend, { XfconfGsettingsBackend *self; GValue *value; + gchar *var_str; gboolean ret_val; self = XFCONF_GSETTINGS_BACKEND(backend); - value = xfconf_gvariant_to_gvalue (variant); + g_debug("Writing property %s variant %s\n", key, g_variant_get_type_string(variant)); - if (value) { - if (add_sig_changed) - g_hash_table_replace (self->changed_prop, g_strdup(key), origin_tag); + value = xfconf_gvariant_to_gvalue (variant); - ret_val = xfconf_channel_set_property (self->channel, key, value); - if (ret_val == FALSE && add_sig_changed) - g_hash_table_remove (self->changed_prop, key); + if (value == NULL) { + value = g_new0 (GValue, 1); + var_str = g_variant_print(variant, FALSE); - g_value_unset (value); - g_free (value); + g_value_init(value, G_TYPE_STRING); + g_value_set_string(value, var_str); } + + if (add_sig_changed) + g_hash_table_replace (self->changed_prop, g_strdup(key), origin_tag); + + ret_val = xfconf_channel_set_property (self->channel, key, value); + if (ret_val == FALSE && add_sig_changed) + g_hash_table_remove (self->changed_prop, key); + + g_value_unset (value); + g_free (value); + return FALSE; } @@ -244,6 +264,14 @@ xfconf_gsettings_backend_unsubscribe (GSettingsBackend *backend, } +static void +xfconf_gsettings_backend_sync (GSettingsBackend *backend) +{ + GDBusConnection *bus; + bus = _xfconf_get_gdbus_connection (); + g_dbus_connection_flush_sync (bus, NULL, NULL); +} + static gboolean xfconf_gsettings_backend_has_prefix (gconstpointer v1, gconstpointer v2) @@ -297,6 +325,7 @@ xfconf_gsettings_backend_class_init (XfconfGsettingsBackendClass *klass) gsettings_class->write = xfconf_gsettings_backend_write; gsettings_class->subscribe = xfconf_gsettings_backend_subscribe; gsettings_class->unsubscribe = xfconf_gsettings_backend_unsubscribe; + gsettings_class->sync = xfconf_gsettings_backend_sync; object_class->finalize = (void (*) (GObject *object)) xfconf_gsettings_backend_finalize; } -- To stop receiving notification emails like this one, please contact the administrator of this repository. _______________________________________________ Xfce4-commits mailing list [email protected] https://mail.xfce.org/mailman/listinfo/xfce4-commits
