[Galago-commits] r2320 - in trunk/galago-daemon: . src

galago-commits at freedesktop.org galago-commits at freedesktop.org
Sat Nov 19 15:01:29 PST 2005


Author: chipx86
Date: 2005-11-19 15:01:27 -0800 (Sat, 19 Nov 2005)
New Revision: 2320

Modified:
   trunk/galago-daemon/ChangeLog
   trunk/galago-daemon/src/person.c
Log:
Update to recurse into the VARIANT container for property values, and to create them when sending out the signal.


Modified: trunk/galago-daemon/ChangeLog
===================================================================
--- trunk/galago-daemon/ChangeLog	2005-11-19 23:00:10 UTC (rev 2319)
+++ trunk/galago-daemon/ChangeLog	2005-11-19 23:01:27 UTC (rev 2320)
@@ -1,3 +1,9 @@
+Sat Nov 19 15:00:45 PST 2005  Christian Hammond <chipx86 at chipx86.com>
+
+	* src/person.c:
+	  - Update to recurse into the VARIANT container for property values,
+	    and to create them when sending out the signal.
+
 Sat Nov 12 16:06:44 PST 2005  Christian Hammond <chipx86 at chipx86.com>
 
 	A src/image.c:
@@ -5,14 +11,6 @@
 	D src/photo.c:
 	  - Add image.c and remove avatar.c and photo.c.
 
-Sat Nov 12 16:05:46 PST 2005  Christian Hammond <chipx86 at chipx86.com>
-
-	A src/image.c:
-	D src/avatar.c:
-	D src/photo.c:
-	* ChangeLog:
-	  - Re
-
 Sat Nov 12 16:03:22 PST 2005  Christian Hammond <chipx86 at chipx86.com>
 
 	A src/image.c:

Modified: trunk/galago-daemon/src/person.c
===================================================================
--- trunk/galago-daemon/src/person.c	2005-11-19 23:00:10 UTC (rev 2319)
+++ trunk/galago-daemon/src/person.c	2005-11-19 23:01:27 UTC (rev 2320)
@@ -67,7 +67,10 @@
 	GalagoPerson *main_person;
 	const char *name;
 	DBusMessage *signal;
-	DBusMessageIter iter, signal_iter;
+	DBusMessageIter iter, value_iter;
+	DBusMessageIter signal_iter, signal_value_iter;
+	int arg_type;
+	gboolean success = TRUE;
 
 	meta_person = GALAGOD_META_PERSON(person);
 	main_person = galagod_meta_person_get_person(meta_person);
@@ -85,32 +88,66 @@
 
 	dbus_message_iter_append_basic(&signal_iter, DBUS_TYPE_STRING, &name);
 
-	if (dbus_message_iter_get_arg_type(&iter) == DBUS_TYPE_STRING)
+	dbus_message_iter_recurse(&iter, &value_iter);
+	arg_type = dbus_message_iter_get_arg_type(&value_iter);
+
+	switch (arg_type)
 	{
-		const char *value;
-		dbus_message_iter_get_basic(&iter, &value);
-		galago_person_set_property_string(main_person, name, value);
-		dbus_message_iter_append_basic(&signal_iter, DBUS_TYPE_STRING,
-									   &value);
+		case DBUS_TYPE_STRING:
+		{
+			const char *value;
+			dbus_message_iter_get_basic(&value_iter, &value);
+			galago_person_set_property_string(main_person, name, value);
+			dbus_message_iter_open_container(&signal_iter, DBUS_TYPE_VARIANT,
+											 DBUS_TYPE_STRING_AS_STRING,
+											 &signal_value_iter);
+			dbus_message_iter_append_basic(&signal_value_iter,
+										   DBUS_TYPE_STRING, &value);
+			dbus_message_iter_close_container(&signal_iter,
+											  &signal_value_iter);
+			break;
+		}
+
+		case DBUS_TYPE_BOOLEAN:
+		{
+			gboolean value;
+			dbus_message_iter_get_basic(&value_iter, &value);
+			galago_person_set_property_bool(main_person, name, value);
+			dbus_message_iter_open_container(&signal_iter, DBUS_TYPE_VARIANT,
+											 DBUS_TYPE_BOOLEAN_AS_STRING,
+											 &signal_value_iter);
+			dbus_message_iter_append_basic(&signal_value_iter,
+										   DBUS_TYPE_BOOLEAN, &value);
+			dbus_message_iter_close_container(&signal_iter,
+											  &signal_value_iter);
+			break;
+		}
+
+		case DBUS_TYPE_UINT32:
+		{
+			dbus_uint32_t value;
+			dbus_message_iter_get_basic(&value_iter, &value);
+			galago_person_set_property_uint32(main_person, name, value);
+			dbus_message_iter_open_container(&signal_iter, DBUS_TYPE_VARIANT,
+											 DBUS_TYPE_UINT32_AS_STRING,
+											 &signal_value_iter);
+			dbus_message_iter_append_basic(&signal_value_iter,
+										   DBUS_TYPE_UINT32, &value);
+			dbus_message_iter_close_container(&signal_iter,
+											  &signal_value_iter);
+			break;
+		}
+
+		default:
+			galago_log_warning("Invalid property type %d passed to "
+							   "SetProperty\n", arg_type);
+			success = FALSE;
+			break;
 	}
-	else if (dbus_message_iter_get_arg_type(&iter) == DBUS_TYPE_BOOLEAN)
-	{
-		dbus_bool_t value;
-		dbus_message_iter_get_basic(&iter, &value);
-		galago_person_set_property_bool(main_person, name, value);
-		dbus_message_iter_append_basic(&signal_iter, DBUS_TYPE_BOOLEAN,
-									   &value);
-	}
-	else if (dbus_message_iter_get_arg_type(&iter) == DBUS_TYPE_UINT32)
-	{
-		dbus_uint32_t value;
-		dbus_message_iter_get_basic(&iter, &value);
-		galago_person_set_property_uint32(main_person, name, value);
-		dbus_message_iter_append_basic(&signal_iter, DBUS_TYPE_UINT32,
-									   &value);
-	}
 
-	dbus_connection_send(dbus_conn, signal, NULL);
+	if (success)
+		dbus_connection_send(dbus_conn, signal, NULL);
+
 	dbus_message_unref(signal);
 
 	galagod_dbus_send_empty_reply(dbus_conn, message);



More information about the galago-commits mailing list