[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