[Galago-commits] r2402 - in trunk/libgalago: . docs/protocol libgalago

galago-commits at freedesktop.org galago-commits at freedesktop.org
Tue Jan 10 00:41:18 PST 2006


Author: chipx86
Date: 2006-01-10 00:41:16 -0800 (Tue, 10 Jan 2006)
New Revision: 2402

Modified:
   trunk/libgalago/ChangeLog
   trunk/libgalago/docs/protocol/protocol.hh
   trunk/libgalago/libgalago/galago-dbus.c
   trunk/libgalago/libgalago/galago-service.c
Log:
Have the daemon compute the account object paths instead of doing it ourselves.


Modified: trunk/libgalago/ChangeLog
===================================================================
--- trunk/libgalago/ChangeLog	2006-01-10 08:23:17 UTC (rev 2401)
+++ trunk/libgalago/ChangeLog	2006-01-10 08:41:16 UTC (rev 2402)
@@ -1,3 +1,11 @@
+Tue Jan 10 00:40:54 PST 2006  Christian Hammond <chipx86 at chipx86.com>
+
+	* docs/protocol/protocol.hh:
+	* libgalago/galago-dbus.c:
+	* libgalago/galago-service.c:
+	  - Have the daemon compute the account object paths instead of doing
+	    it ourselves.
+
 Tue Jan 10 00:23:06 PST 2006  Christian Hammond <chipx86 at chipx86.com>
 
 	* libgalago/galago-core.c:

Modified: trunk/libgalago/docs/protocol/protocol.hh
===================================================================
--- trunk/libgalago/docs/protocol/protocol.hh	2006-01-10 08:23:17 UTC (rev 2401)
+++ trunk/libgalago/docs/protocol/protocol.hh	2006-01-10 08:41:16 UTC (rev 2402)
@@ -597,8 +597,10 @@
 	 * Adds an account to a service.
 	 *
 	 * @param account The account to add.
+	 *
+	 * @return The account's new object path.
 	 */
-	void AddAccount(Account account);
+	string AddAccount(Account account);
 
 	/**
 	 * Removes an account from a service.

Modified: trunk/libgalago/libgalago/galago-dbus.c
===================================================================
--- trunk/libgalago/libgalago/galago-dbus.c	2006-01-10 08:23:17 UTC (rev 2401)
+++ trunk/libgalago/libgalago/galago-dbus.c	2006-01-10 08:41:16 UTC (rev 2402)
@@ -537,8 +537,8 @@
 					break;
 
 				case DBUS_TYPE_STRING:
-					retval = (void *)
-						galago_dbus_message_iter_get_string_or_nil(iter);
+					retval = (gpointer)g_strdup(
+						galago_dbus_message_iter_get_string_or_nil(iter));
 					break;
 
 				default:

Modified: trunk/libgalago/libgalago/galago-service.c
===================================================================
--- trunk/libgalago/libgalago/galago-service.c	2006-01-10 08:23:17 UTC (rev 2401)
+++ trunk/libgalago/libgalago/galago-service.c	2006-01-10 08:41:16 UTC (rev 2402)
@@ -489,8 +489,6 @@
 
 	if (account == NULL)
 	{
-		const char *obj_prefix;
-
 		galago_context_push(galago_object_get_context(GALAGO_OBJECT(service)));
 		account = g_object_new(GALAGO_TYPE_ACCOUNT,
 							   "service", service,
@@ -498,20 +496,9 @@
 							   "username", username,
 							   "origin", service_origin,
 							   NULL);
-		galago_context_pop();
-
-		obj_prefix = galago_object_get_dbus_path(GALAGO_OBJECT(service));
-
-		if (obj_prefix != NULL)
-		{
-			char *obj_path = g_strdup_printf("%s/%s", obj_prefix,
-				galago_dbus_normalize_name(username));
-			galago_object_set_dbus_path(GALAGO_OBJECT(account), obj_path);
-			g_free(obj_path);
-		}
-
 		galago_person_add_account(person, account);
 		galago_service_add_account(service, account);
+		galago_context_pop();
 	}
 
 	return account;
@@ -574,6 +561,7 @@
 	return service->priv->accounts;
 }
 
+/* XXX Make this private */
 void
 galago_service_add_account(GalagoService *service, GalagoAccount *account)
 {
@@ -586,6 +574,7 @@
 
 	username = galago_account_get_username(account);
 
+	/* XXX Remove this when this function is private. */
 	if (galago_service_get_account(service, username, FALSE) != NULL)
 	{
 		g_warning("An account with username %s has already been "
@@ -685,10 +674,19 @@
 static void
 _galago_dbus_service_add_account(GalagoService *service, GalagoAccount *account)
 {
+	char *obj_path;
+
 	if (!galago_is_connected() || !galago_is_feed())
 		return;
 
-	galago_dbus_send_message(GALAGO_OBJECT(service), "AddAccount",
+	obj_path = galago_dbus_send_message_with_reply(
+		GALAGO_OBJECT(service), "AddAccount",
+		galago_value_new(GALAGO_VALUE_TYPE_STRING, NULL, NULL),
 		galago_value_new_object(GALAGO_TYPE_ACCOUNT, G_OBJECT(account)),
 		NULL);
+
+	g_assert(obj_path != NULL);
+
+	galago_object_set_dbus_path(GALAGO_OBJECT(account), obj_path);
+	g_free(obj_path);
 }



More information about the galago-commits mailing list