[maemo-commits] [maemo-commits] r15530 - in projects/haf/trunk/gconf2: . debian gconf

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Fri May 9 10:40:54 EEST 2008
Author: richard
Date: 2008-05-09 10:40:53 +0300 (Fri, 09 May 2008)
New Revision: 15530

Modified:
   projects/haf/trunk/gconf2/ChangeLog
   projects/haf/trunk/gconf2/debian/changelog
   projects/haf/trunk/gconf2/gconf/gconf-client.c
Log:
NB#78964

Modified: projects/haf/trunk/gconf2/ChangeLog
===================================================================
--- projects/haf/trunk/gconf2/ChangeLog	2008-05-08 10:48:03 UTC (rev 15529)
+++ projects/haf/trunk/gconf2/ChangeLog	2008-05-09 07:40:53 UTC (rev 15530)
@@ -1,3 +1,9 @@
+2008-05-09  Richard Hult  <richard at imendio.com>
+
+	* gconf/gconf-client.c (gconf_client_flush_notifies): If the key
+	is not in the cache, check if it's being monitored, fixes
+	NB#78964.
+
 2008-03-31  Richard Hult  <richard at imendio.com>
 
 	* gconf/gconf-database.c (gconf_database_notify_listeners): Get

Modified: projects/haf/trunk/gconf2/debian/changelog
===================================================================
--- projects/haf/trunk/gconf2/debian/changelog	2008-05-08 10:48:03 UTC (rev 15529)
+++ projects/haf/trunk/gconf2/debian/changelog	2008-05-09 07:40:53 UTC (rev 15530)
@@ -1,3 +1,9 @@
+gconf2 (2.16.0-1osso13) unstable; urgency=low
+
+  * Fixes: NB#78964, Failure to call the GConf notification cb in certain
+
+ -- Richard Hult <richard at imendio.com>  Fri,  9 May 2008 09:31:36 +0200
+
 gconf2 (2.16.0-1osso12) unstable; urgency=low
 
   * Fixes: NB#82891, connectivity core-dumps are generating frequently

Modified: projects/haf/trunk/gconf2/gconf/gconf-client.c
===================================================================
--- projects/haf/trunk/gconf2/gconf/gconf-client.c	2008-05-08 10:48:03 UTC (rev 15529)
+++ projects/haf/trunk/gconf2/gconf/gconf-client.c	2008-05-09 07:40:53 UTC (rev 15530)
@@ -2534,8 +2534,29 @@
         }
       else
         {
-          trace ("Key %s was in notify queue but not in cache; we must have stopped monitoring it; not notifying\n",
-                 tmp->data);
+          /* The dbus version cleans the cache after modifying a value so a get
+           * directly after a set doesn't return a stale value. That means we
+           * have to check if the key is supposed to be monitored here, we can't
+           * just rely on it being in the cache.
+           */
+          if (key_being_monitored (client, tmp->data))
+            {
+              trace ("Key %s was in notify queue but not in cache, but is being monitored\n",
+                     tmp->data);
+
+              entry = gconf_client_get_entry (client, tmp->data, NULL, TRUE, NULL);
+              if (entry != NULL)
+                {
+                  notify_one_entry (client, entry);
+                  gconf_entry_unref (entry);
+                  last_entry = NULL;
+                }
+            }
+          else
+            {
+              trace ("Key %s was in notify queue but not in cache; we must have stopped monitoring it; not notifying\n",
+                     tmp->data);
+            }
         }
       
       tmp = tmp->next;


More information about the maemo-commits mailing list