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

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Thu May 24 17:09:31 EEST 2007
Author: richard
Date: 2007-05-24 17:09:29 +0300 (Thu, 24 May 2007)
New Revision: 11816

Modified:
   projects/haf/trunk/gconf2/ChangeLog
   projects/haf/trunk/gconf2/debian/changelog
   projects/haf/trunk/gconf2/gconf/gconf-database-dbus.c
   projects/haf/trunk/gconf2/gconf/gconf-dbus.c
Log:
Use array for dir listing.


Modified: projects/haf/trunk/gconf2/ChangeLog
===================================================================
--- projects/haf/trunk/gconf2/ChangeLog	2007-05-24 14:02:54 UTC (rev 11815)
+++ projects/haf/trunk/gconf2/ChangeLog	2007-05-24 14:09:29 UTC (rev 11816)
@@ -1,3 +1,10 @@
+2007-05-24  Richard Hult  <richard at imendio.com>
+
+	* gconf/gconf-database-dbus.c: (database_handle_get_all_dirs):
+	* gconf/gconf-dbus.c: (gconf_engine_all_dirs): Use an array for
+	directories as well, to avoid hitting the max size for message
+	headers if there are many dirs (hundreds at the same level).
+
 2007-05-22  Richard Hult  <richard at imendio.com>
 
 	Improve tests and clean up:

Modified: projects/haf/trunk/gconf2/debian/changelog
===================================================================
--- projects/haf/trunk/gconf2/debian/changelog	2007-05-24 14:02:54 UTC (rev 11815)
+++ projects/haf/trunk/gconf2/debian/changelog	2007-05-24 14:09:29 UTC (rev 11816)
@@ -2,8 +2,10 @@
 
   * UNRELEASED
   * Handle setting empty pairs
+  * Improve test cases
+  * Use array for dir listing
 
- -- Richard Hult <richard at imendio.com>  Tue, 15 May 2007 15:22:55 +0200
+ -- Richard Hult <richard at imendio.com>  Fri, 25 May 2007 16:08:42 +0200
 
 gconf2 (2.16.0-1osso4) unstable; urgency=low
 

Modified: projects/haf/trunk/gconf2/gconf/gconf-database-dbus.c
===================================================================
--- projects/haf/trunk/gconf2/gconf/gconf-database-dbus.c	2007-05-24 14:02:54 UTC (rev 11815)
+++ projects/haf/trunk/gconf2/gconf/gconf-database-dbus.c	2007-05-24 14:09:29 UTC (rev 11816)
@@ -583,6 +583,7 @@
   GError          *gerror = NULL;
   DBusMessage     *reply;
   DBusMessageIter  iter;
+  DBusMessageIter  array_iter;
 
   if (!gconfd_dbus_get_message_args (conn, message,
 				     DBUS_TYPE_STRING, &dir,
@@ -597,16 +598,24 @@
   reply = dbus_message_new_method_return (message);
 
   dbus_message_iter_init_append (reply, &iter);
+
+  dbus_message_iter_open_container (&iter,
+				    DBUS_TYPE_ARRAY,
+				    DBUS_TYPE_STRING_AS_STRING,
+				    &array_iter);
+  
   for (l = dirs; l; l = l->next) 
     {
       gchar *str = (gchar *) l->data;
-      
-      dbus_message_iter_append_basic (&iter,
+
+      dbus_message_iter_append_basic (&array_iter,
 				      DBUS_TYPE_STRING,
 				      &str);
       
       g_free (l->data);
     }
+
+  dbus_message_iter_close_container (&iter, &array_iter);
  
   g_slist_free (dirs);
   

Modified: projects/haf/trunk/gconf2/gconf/gconf-dbus.c
===================================================================
--- projects/haf/trunk/gconf2/gconf/gconf-dbus.c	2007-05-24 14:02:54 UTC (rev 11815)
+++ projects/haf/trunk/gconf2/gconf/gconf-dbus.c	2007-05-24 14:09:29 UTC (rev 11816)
@@ -1863,6 +1863,7 @@
   DBusMessage *message, *reply;
   DBusError error;
   DBusMessageIter iter;
+  DBusMessageIter array_iter;
   
   g_return_val_if_fail(conf != NULL, NULL);
   g_return_val_if_fail(dir != NULL, NULL);
@@ -1932,17 +1933,18 @@
 
   dbus_message_iter_init (reply, &iter);
 
-  while (dbus_message_iter_get_arg_type (&iter) == DBUS_TYPE_STRING)
+  dbus_message_iter_recurse (&iter, &array_iter);
+  while (dbus_message_iter_get_arg_type (&array_iter) == DBUS_TYPE_STRING)
     {
       const gchar *key;
       gchar       *s;
       
-      dbus_message_iter_get_basic (&iter, &key);
+      dbus_message_iter_get_basic (&array_iter, &key);
       
       s = gconf_concat_dir_and_key (dir, key);
       subdirs = g_slist_prepend (subdirs, s);
       
-      if (!dbus_message_iter_next (&iter))
+      if (!dbus_message_iter_next (&array_iter))
 	break;
     }
   


More information about the maemo-commits mailing list