From bf756ad608f849159b6d338fe6bb26798dabafc9 Mon Sep 17 00:00:00 2001 From: Mike Gorse Date: Thu, 29 Apr 2010 17:35:24 -0400 Subject: [PATCH] Set an application's id when registering it --- registryd/registry.c | 28 ++++++++++++++++++++++++++++ registryd/registry.h | 1 + 2 files changed, 29 insertions(+) diff --git a/registryd/registry.c b/registryd/registry.c index e1c858d..7940dad 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 //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, ®->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 ec33618..6d4a04c 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; }; -- 2.7.4