From c3607fd551730c37f7dc2cc6c47950e4047a7b1d Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Tue, 12 Feb 2013 20:10:23 +0100 Subject: [PATCH] x11: Don't store name in XSettingsSetting anymore This is in preparation to switching XSettingsSetting to GValue --- gdk/x11/xsettings-client.c | 42 +++++++++++++++++--------------------- gdk/x11/xsettings-client.h | 1 - 2 files changed, 19 insertions(+), 24 deletions(-) diff --git a/gdk/x11/xsettings-client.c b/gdk/x11/xsettings-client.c index 77cba70fd..a27ef0bd0 100644 --- a/gdk/x11/xsettings-client.c +++ b/gdk/x11/xsettings-client.c @@ -68,6 +68,7 @@ notify_changes (XSettingsClient *client, { GHashTableIter iter; XSettingsSetting *setting, *old_setting; + const char *name; if (!client->notify) return; @@ -75,18 +76,18 @@ notify_changes (XSettingsClient *client, if (client->settings != NULL) { g_hash_table_iter_init (&iter, client->settings); - while (g_hash_table_iter_next (&iter, NULL, (gpointer*) &setting)) + while (g_hash_table_iter_next (&iter, (gpointer *) &name, (gpointer*) &setting)) { - old_setting = old_list ? g_hash_table_lookup (old_list, setting->name) : NULL; + old_setting = old_list ? g_hash_table_lookup (old_list, name) : NULL; if (old_setting == NULL) - client->notify (setting->name, XSETTINGS_ACTION_NEW, setting, client->cb_data); + client->notify (name, XSETTINGS_ACTION_NEW, setting, client->cb_data); else if (!xsettings_setting_equal (setting, old_setting)) - client->notify (setting->name, XSETTINGS_ACTION_CHANGED, setting, client->cb_data); + client->notify (name, XSETTINGS_ACTION_CHANGED, setting, client->cb_data); /* remove setting from old_list */ if (old_setting != NULL) - g_hash_table_remove (old_list, setting->name); + g_hash_table_remove (old_list, name); } } @@ -94,8 +95,8 @@ notify_changes (XSettingsClient *client, { /* old_list now contains only deleted settings */ g_hash_table_iter_init (&iter, old_list); - while (g_hash_table_iter_next (&iter, NULL, (gpointer*) &old_setting)) - client->notify (old_setting->name, XSETTINGS_ACTION_DELETED, NULL, client->cb_data); + while (g_hash_table_iter_next (&iter, (gpointer *) &name, (gpointer*) &old_setting)) + client->notify (name, XSETTINGS_ACTION_DELETED, NULL, client->cb_data); } } @@ -208,6 +209,7 @@ parse_settings (unsigned char *data, CARD32 n_entries; CARD32 i; XSettingsSetting *setting = NULL; + char *name; buffer.pos = buffer.data = data; buffer.len = len; @@ -247,8 +249,7 @@ parse_settings (unsigned char *data, setting = g_new (XSettingsSetting, 1); setting->type = XSETTINGS_TYPE_INT; /* No allocated memory */ - setting->name = NULL; - if (!fetch_string (&buffer, name_len, &setting->name) || + if (!fetch_string (&buffer, name_len, &name) || /* last change serial (we ignore it) */ !fetch_card32 (&buffer, &v_int)) goto out; @@ -260,14 +261,14 @@ parse_settings (unsigned char *data, goto out; setting->data.v_int = (INT32)v_int; - GDK_NOTE(SETTINGS, g_print(" %s = %d\n", setting->name, (gint) setting->data.v_int)); + GDK_NOTE(SETTINGS, g_print(" %s = %d\n", name, (gint) setting->data.v_int)); break; case XSETTINGS_TYPE_STRING: if (!fetch_card32 (&buffer, &v_int) || !fetch_string (&buffer, v_int, &setting->data.v_string)) goto out; - GDK_NOTE(SETTINGS, g_print(" %s = \"%s\"\n", setting->name, setting->data.v_string)); + GDK_NOTE(SETTINGS, g_print(" %s = \"%s\"\n", name, setting->data.v_string)); break; case XSETTINGS_TYPE_COLOR: if (!fetch_ushort (&buffer, &setting->data.v_color.red) || @@ -276,13 +277,13 @@ parse_settings (unsigned char *data, !fetch_ushort (&buffer, &setting->data.v_color.alpha)) goto out; - GDK_NOTE(SETTINGS, g_print(" %s = #%02X%02X%02X%02X\n", setting->name, + GDK_NOTE(SETTINGS, g_print(" %s = #%02X%02X%02X%02X\n", name, setting->data.v_color.alpha, setting->data.v_color.red, setting->data.v_color.green, setting->data.v_color.blue)); break; default: /* Quietly ignore unknown types */ - GDK_NOTE(SETTINGS, g_print(" %s = ignored (unknown type %u)\n", setting->name, type)); + GDK_NOTE(SETTINGS, g_print(" %s = ignored (unknown type %u)\n", name, type)); break; } @@ -290,17 +291,18 @@ parse_settings (unsigned char *data, if (settings == NULL) settings = g_hash_table_new_full (g_str_hash, g_str_equal, - NULL, + g_free, (GDestroyNotify) xsettings_setting_free); - if (g_hash_table_lookup (settings, setting->name) != NULL) + if (g_hash_table_lookup (settings, name) != NULL) { - g_warning ("Invalid XSETTINGS property (Duplicate entry for '%s')", setting->name); + g_warning ("Invalid XSETTINGS property (Duplicate entry for '%s')", name); goto out; } - g_hash_table_insert (settings, setting->name, setting); + g_hash_table_insert (settings, name, setting); setting = NULL; + name = NULL; } return settings; @@ -520,9 +522,6 @@ xsettings_setting_equal (XSettingsSetting *setting_a, if (setting_a->type != setting_b->type) return 0; - if (strcmp (setting_a->name, setting_b->name) != 0) - return 0; - switch (setting_a->type) { case XSETTINGS_TYPE_INT: @@ -545,9 +544,6 @@ xsettings_setting_free (XSettingsSetting *setting) if (setting->type == XSETTINGS_TYPE_STRING) g_free (setting->data.v_string); - if (setting->name) - g_free (setting->name); - g_free (setting); } diff --git a/gdk/x11/xsettings-client.h b/gdk/x11/xsettings-client.h index 298950b11..0b9aa805c 100644 --- a/gdk/x11/xsettings-client.h +++ b/gdk/x11/xsettings-client.h @@ -63,7 +63,6 @@ struct _XSettingsColor struct _XSettingsSetting { - char *name; XSettingsType type; union { -- 2.43.2