x11: Don't store name in XSettingsSetting anymore
This is in preparation to switching XSettingsSetting to GValue
This commit is contained in:
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -63,7 +63,6 @@ struct _XSettingsColor
|
||||
|
||||
struct _XSettingsSetting
|
||||
{
|
||||
char *name;
|
||||
XSettingsType type;
|
||||
|
||||
union {
|
||||
|
||||
Reference in New Issue
Block a user