+++ /dev/null
-diff -urN GConf-2.26.1/gconf/gconf-client.c GConf-2.26.1.new/gconf/gconf-client.c
---- GConf-2.26.1/gconf/gconf-client.c 2009-05-06 02:37:32.000000000 +0200
-+++ GConf-2.26.1.new/gconf/gconf-client.c 2009-05-09 12:20:23.420739141 +0200
-@@ -230,8 +230,6 @@
- client->error_mode = GCONF_CLIENT_HANDLE_UNRETURNED;
- client->dir_hash = g_hash_table_new (g_str_hash, g_str_equal);
- client->cache_hash = g_hash_table_new (g_str_hash, g_str_equal);
-- client->cache_dirs = g_hash_table_new_full (g_str_hash, g_str_equal,
-- g_free, NULL);
- /* We create the listeners only if they're actually used */
- client->listeners = NULL;
- client->notify_list = NULL;
-@@ -309,9 +307,6 @@
- g_hash_table_destroy (client->cache_hash);
- client->cache_hash = NULL;
-
-- g_hash_table_destroy (client->cache_dirs);
-- client->cache_dirs = NULL;
--
- unregister_client (client);
-
- set_engine (client, NULL);
-@@ -660,19 +655,6 @@
- return FALSE;
- }
-
--static gboolean
--clear_cache_dirs_foreach (char *key, gpointer value, char *dir)
--{
-- if (strcmp (dir, key) == 0 ||
-- gconf_key_is_below (dir, key))
-- {
-- trace ("'%s' no longer fully cached", dir);
-- return TRUE;
-- }
--
-- return FALSE;
--}
--
- static void
- gconf_client_real_remove_dir (GConfClient* client,
- Dir* d,
-@@ -699,9 +681,6 @@
- g_hash_table_foreach_remove (client->cache_hash,
- (GHRFunc)clear_dir_cache_foreach,
- d->name);
-- g_hash_table_foreach_remove (client->cache_dirs,
-- (GHRFunc)clear_cache_dirs_foreach,
-- d->name);
- dir_destroy(d);
-
- ad.client = client;
-@@ -828,7 +807,7 @@
- g_hash_table_foreach_remove (client->cache_hash, (GHRFunc)clear_cache_foreach,
- client);
-
-- g_hash_table_remove_all (client->cache_dirs);
-+ g_assert (g_hash_table_size(client->cache_hash) == 0);
- }
-
- static void
-@@ -936,8 +915,6 @@
- }
-
- cache_entry_list_destructively (client, pairs);
-- trace ("Mark '%s' as fully cached", dir);
-- g_hash_table_insert (client->cache_dirs, g_strdup (dir), GINT_TO_POINTER (1));
- }
-
- void
-@@ -1085,28 +1062,13 @@
- {
- GError *error = NULL;
- GSList *retval;
-- int dirlen;
--
-- if (g_hash_table_lookup (client->cache_dirs, dir))
-- {
-- GHashTableIter iter;
-- gchar *key;
-- GConfEntry *entry;
--
-- trace ("CACHED: Getting all values in '%s'", dir);
--
-- dirlen = strlen (dir);
-- retval = NULL;
-- g_hash_table_iter_init (&iter, client->cache_hash);
-- while (g_hash_table_iter_next (&iter, &key, &entry))
-- {
-- if (g_str_has_prefix (key, dir) &&
-- key + dirlen == strrchr (key, '/'))
-- retval = g_slist_prepend (retval, gconf_entry_copy (entry));
-- }
--
-- return retval;
-- }
-+
-+ /* We could just use the cache to get all the entries,
-+ * iff we have previously done an all_entries and the
-+ * cache hasn't since been tossed out, and if we are monitoring
-+ * this directory.
-+ * FIXME
-+ */
-
- trace ("REMOTE: Getting all values in '%s'", dir);
-
-@@ -1120,11 +1082,7 @@
- return NULL;
-
- if (key_being_monitored (client, dir))
-- {
-- cache_entry_list_destructively (client, copy_entry_list (retval));
-- trace ("Mark '%s' as fully cached", dir);
-- g_hash_table_insert (client->cache_dirs, g_strdup (dir), GINT_TO_POINTER (1));
-- }
-+ cache_entry_list_destructively (client, copy_entry_list (retval));
-
- return retval;
- }
-@@ -1260,8 +1218,7 @@
- {
- trace ("CACHED: Query for '%s'", key);
-
-- if (entry == NULL)
-- return NULL;
-+ g_assert (entry != NULL);
-
- if (gconf_entry_get_is_default (entry) && !use_default)
- return NULL;
-@@ -2009,25 +1966,6 @@
-
- *entryp = entry;
-
-- if (!entry)
-- {
-- char *dir, *last_slash;
--
-- dir = g_strdup (key);
-- last_slash = strrchr (dir, '/');
-- g_assert (last_slash != NULL);
-- *last_slash = 0;
--
-- if (g_hash_table_lookup (client->cache_dirs, dir))
-- {
-- g_free (dir);
-- trace ("Negative cache hit on %s", key);
-- return TRUE;
-- }
--
-- g_free (dir);
-- }
--
- return entry != NULL;
- }
-
-diff -urN GConf-2.26.1/gconf/gconf-client.h GConf-2.26.1.new/gconf/gconf-client.h
---- GConf-2.26.1/gconf/gconf-client.h 2009-04-25 08:44:06.000000000 +0200
-+++ GConf-2.26.1.new/gconf/gconf-client.h 2009-05-09 12:20:54.943919396 +0200
-@@ -100,7 +100,7 @@
- GSList *notify_list;
- guint notify_handler;
- int pending_notify_count;
-- GHashTable *cache_dirs;
-+ gpointer pad1;
- int pad2;
- };
-