Set an application's id when registering it
authorMike Gorse <mgorse@novell.com>
Thu, 29 Apr 2010 21:35:24 +0000 (17:35 -0400)
committerMike Gorse <mgorse@novell.com>
Thu, 29 Apr 2010 21:45:23 +0000 (17:45 -0400)
registryd/registry.c

index 7940dad..822fa6c 100644 (file)
@@ -182,6 +182,30 @@ FILE *fp=fopen("/home/mgorse/xx","r");if(!fp)return;fclose(fp);
 }
 
 static void
+set_id (SpiRegistry *reg, DBusConnection *bus, const gchar *name, const gchar *path)
+{
+  DBusMessage *message;
+  DBusMessageIter iter, iter_variant;
+  const char *iface_application = "org.a11y.atspi.Application";
+  const char *id = "Id";
+
+  message = dbus_message_new_method_call (name, path,
+                                          DBUS_INTERFACE_PROPERTIES, "Set");
+  if (!message)
+    return;
+  dbus_message_iter_init_append (message, &iter);
+  dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &iface_application);
+  dbus_message_iter_append_basic (&iter, DBUS_TYPE_STRING, &id);
+  dbus_message_iter_open_container (&iter, DBUS_TYPE_VARIANT, "i", &iter_variant);
+  dbus_message_iter_append_basic (&iter_variant, DBUS_TYPE_INT32, &reg->id);
+  /* TODO: This will cause problems if we cycle through 2^31 ids */
+  reg->id++;
+  dbus_message_iter_close_container (&iter, &iter_variant);
+  dbus_connection_send (bus, message, NULL);
+  dbus_message_unref (message);
+}
+
+static void
 remove_application (SpiRegistry *reg, DBusConnection *bus, guint index)
 {
   const gchar *name = "";