[gtk+] xsettings: Remove XSettingsList type



commit 8fa1b2bb9daf7572d3c0eb731b4166d1e3bd3d14
Author: Benjamin Otte <otte redhat com>
Date:   Sat Feb 2 19:22:04 2013 +0100

    xsettings: Remove XSettingsList type
    
    Use GHashTable throughout

 gdk/x11/xsettings-client.c |   44 ++++++++++++++++++++++++++++++--------------
 gdk/x11/xsettings-common.c |   31 -------------------------------
 gdk/x11/xsettings-common.h |   11 -----------
 3 files changed, 30 insertions(+), 56 deletions(-)
---
diff --git a/gdk/x11/xsettings-client.c b/gdk/x11/xsettings-client.c
index fb97f95..20cc728 100644
--- a/gdk/x11/xsettings-client.c
+++ b/gdk/x11/xsettings-client.c
@@ -49,12 +49,12 @@ struct _XSettingsClient
   Atom selection_atom;
   Atom xsettings_atom;
 
-  XSettingsList *settings;
+  GHashTable *settings; /* string => XSettingsSetting */
 };
 
 static void
 notify_changes (XSettingsClient *client,
-               XSettingsList   *old_list)
+               GHashTable      *old_list)
 {
   GHashTableIter iter;
   XSettingsSetting *setting, *old_setting;
@@ -67,7 +67,7 @@ notify_changes (XSettingsClient *client,
       g_hash_table_iter_init (&iter, client->settings);
       while (g_hash_table_iter_next (&iter, NULL, (gpointer*) &setting))
        {
-         old_setting = xsettings_list_lookup (old_list, setting->name);
+         old_setting = old_list ? g_hash_table_lookup (old_list, setting->name) : NULL;
 
          if (old_setting == NULL)
            client->notify (setting->name, XSETTINGS_ACTION_NEW, setting, client->cb_data);
@@ -166,13 +166,13 @@ fetch_card8 (XSettingsBuffer *buffer,
 
 #define XSETTINGS_PAD(n,m) ((n + m - 1) & (~(m-1)))
 
-static XSettingsList *
+static GHashTable *
 parse_settings (unsigned char *data,
                size_t         len)
 {
   XSettingsBuffer buffer;
   XSettingsResult result = XSETTINGS_SUCCESS;
-  XSettingsList *settings = NULL;
+  GHashTable *settings = NULL;
   CARD32 serial;
   CARD32 n_entries;
   CARD32 i;
@@ -304,10 +304,18 @@ parse_settings (unsigned char *data,
 
       setting->type = type;
 
-      result = xsettings_list_insert (&settings, setting);
-      if (result != XSETTINGS_SUCCESS)
-       goto out;
+      if (settings == NULL)
+        settings = g_hash_table_new_full (g_str_hash, g_str_equal,
+                                          NULL,
+                                          (GDestroyNotify) xsettings_setting_free);
 
+      if (g_hash_table_lookup (settings, setting->name) != NULL)
+        {
+          result = XSETTINGS_DUPLICATE_ENTRY;
+          goto out;
+        }
+
+      g_hash_table_insert (settings, setting->name, setting);
       setting = NULL;
     }
 
@@ -334,9 +342,9 @@ parse_settings (unsigned char *data,
       if (setting)
        xsettings_setting_free (setting);
 
-      xsettings_list_free (settings);
+      if (settings)
+        g_hash_table_unref (settings);
       settings = NULL;
-
     }
 
   return settings;
@@ -354,7 +362,7 @@ read_settings (XSettingsClient *client)
 
   int (*old_handler) (Display *, XErrorEvent *);
   
-  XSettingsList *old_list = client->settings;
+  GHashTable *old_list = client->settings;
 
   client->settings = NULL;
 
@@ -385,7 +393,8 @@ read_settings (XSettingsClient *client)
     }
 
   notify_changes (client, old_list);
-  xsettings_list_free (old_list);
+  if (old_list)
+    g_hash_table_unref (old_list);
 }
 
 static void
@@ -517,7 +526,8 @@ xsettings_client_destroy (XSettingsClient *client)
   if (client->manager_window && client->watch)
     client->watch (client->manager_window, False, 0, client->cb_data);
   
-  xsettings_list_free (client->settings);
+  if (client->settings)
+    g_hash_table_unref (client->settings);
   free (client);
 }
 
@@ -526,7 +536,13 @@ xsettings_client_get_setting (XSettingsClient   *client,
                              const char        *name,
                              XSettingsSetting **setting)
 {
-  XSettingsSetting *search = xsettings_list_lookup (client->settings, name);
+  XSettingsSetting *search;
+  
+  if (client->settings == NULL)
+    return XSETTINGS_NO_ENTRY;
+
+  search = g_hash_table_lookup (client->settings, name);
+
   if (search)
     {
       *setting = xsettings_setting_copy (search);
diff --git a/gdk/x11/xsettings-common.c b/gdk/x11/xsettings-common.c
index 9c2f677..3e1ebd1 100644
--- a/gdk/x11/xsettings-common.c
+++ b/gdk/x11/xsettings-common.c
@@ -118,34 +118,3 @@ xsettings_setting_free (XSettingsSetting *setting)
   free (setting);
 }
 
-void
-xsettings_list_free (XSettingsList *list)
-{
-  if (list != NULL)
-    g_hash_table_destroy (list);
-}
-
-XSettingsResult
-xsettings_list_insert (XSettingsList    **list,
-                      XSettingsSetting  *setting)
-{
-  if (*list == NULL)
-    *list = g_hash_table_new_full (g_str_hash, g_str_equal, NULL,
-                                   (GDestroyNotify) xsettings_setting_free);
-
-  if (g_hash_table_lookup (*list, setting->name) != NULL)
-    return XSETTINGS_DUPLICATE_ENTRY;
-
-  g_hash_table_insert (*list, setting->name, setting);
-  return XSETTINGS_SUCCESS;
-}
-
-XSettingsSetting *
-xsettings_list_lookup (XSettingsList *list,
-                      const char    *name)
-{
-  if (list == NULL)
-    return NULL;
-    
-  return g_hash_table_lookup (list, name);
-}
diff --git a/gdk/x11/xsettings-common.h b/gdk/x11/xsettings-common.h
index ac14495..03a601d 100644
--- a/gdk/x11/xsettings-common.h
+++ b/gdk/x11/xsettings-common.h
@@ -38,15 +38,10 @@ extern "C" {
 #define xsettings_client_set_grab_func   _gdk_x11_xsettings_client_set_grab_func
 #define xsettings_client_set_ungrab_func _gdk_x11_xsettings_client_set_ungrab_func
 #define xsettings_client_process_event   _gdk_x11_xsettings_client_process_event
-#define xsettings_list_free              _gdk_x11_xsettings_list_free
-#define xsettings_list_insert            _gdk_x11_xsettings_list_insert
-#define xsettings_list_lookup            _gdk_x11_xsettings_list_lookup
 #define xsettings_setting_copy           _gdk_x11_xsettings_setting_copy
 #define xsettings_setting_equal          _gdk_x11_xsettings_setting_equal
 #define xsettings_setting_free           _gdk_x11_xsettings_setting_free
 
-typedef GHashTable XSettingsList;
-
 typedef struct _XSettingsBuffer  XSettingsBuffer;
 typedef struct _XSettingsColor   XSettingsColor;
 typedef struct _XSettingsSetting XSettingsSetting;
@@ -103,12 +98,6 @@ void              xsettings_setting_free  (XSettingsSetting *setting);
 int               xsettings_setting_equal (XSettingsSetting *setting_a,
                                           XSettingsSetting *setting_b);
 
-void              xsettings_list_free   (XSettingsList     *list);
-XSettingsResult   xsettings_list_insert (XSettingsList    **list,
-                                        XSettingsSetting  *setting);
-XSettingsSetting *xsettings_list_lookup (XSettingsList     *list,
-                                        const char        *name);
-
 #define XSETTINGS_PAD(n,m) ((n + m - 1) & (~(m-1)))
 
 #ifdef __cplusplus


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]