summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Gorse <mgorse@novell.com>2010-04-29 17:35:24 -0400
committerMike Gorse <mgorse@novell.com>2010-04-29 17:35:24 -0400
commitbf756ad608f849159b6d338fe6bb26798dabafc9 (patch)
tree7f776a231a97f3f4ebd9b79625acaf46c38a1116
parent653eb27abf4071c7bce32c6ac1c5745894d7d3e9 (diff)
downloadat-spi2-core-bf756ad608f849159b6d338fe6bb26798dabafc9.tar.gz
Set an application's id when registering it
-rw-r--r--registryd/registry.c28
-rw-r--r--registryd/registry.h1
2 files changed, 29 insertions, 0 deletions
diff --git a/registryd/registry.c b/registryd/registry.c
index e1c858d4..7940dad2 100644
--- a/registryd/registry.c
+++ b/registryd/registry.c
@@ -155,6 +155,32 @@ add_application (SpiRegistry *reg, DBusConnection *bus, const gchar *name, const
children_added_listener (bus, reg->apps->len - 1, name, path);
}
+#include <stdio.h> //tmp. for dbg.
+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";
+
+FILE *fp=fopen("/home/mgorse/xx","r");if(!fp)return;fclose(fp);
+ 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)
{
@@ -235,6 +261,8 @@ impl_Embed (DBusConnection *bus, DBusMessage *message, void *user_data)
add_application(reg, bus, app_name, obj_path);
+ set_id (reg, bus, app_name, obj_path);
+
reply = dbus_message_new_method_return (message);
dbus_message_iter_init_append (reply, &reply_iter);
append_reference (&reply_iter,
diff --git a/registryd/registry.h b/registryd/registry.h
index ec336189..6d4a04c2 100644
--- a/registryd/registry.h
+++ b/registryd/registry.h
@@ -43,6 +43,7 @@ G_BEGIN_DECLS
struct _SpiRegistry {
GObject parent;
GPtrArray *apps;
+ dbus_int32_t id;
DBusConnection *bus;
};