X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=registryd%2Fregistry.c;h=a15c673ae92a1b6217a61addb804ac0b4d83de50;hb=1889d0741dab87cb6a46246a1ebd8267f72ad148;hp=2ef53d0fb8e802e3f5bccd73199d69e6eb932197;hpb=f01ffde94695198fe9e68df3b07eea59d563c495;p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git diff --git a/registryd/registry.c b/registryd/registry.c index 2ef53d0..a15c673 100644 --- a/registryd/registry.c +++ b/registryd/registry.c @@ -208,44 +208,11 @@ impl_deregisterApplication (DBusConnection *bus, DBusMessage *message, void *use /*---------------------------------------------------------------------------*/ -static DBusHandlerResult -message_handler (DBusConnection *bus, DBusMessage *message, void *user_data) -{ - DBusMessage *reply = NULL; - guint res = DBUS_HANDLER_RESULT_HANDLED; - - - int mtype; - const char *itf; - const char *name; - - mtype = dbus_message_get_type (message); - itf = dbus_message_get_interface (message); - name = dbus_message_get_member (message); - - if (dbus_message_is_method_call (message, SPI_DBUS_INTERFACE_REGISTRY, "getApplications")) - reply = impl_getApplications (bus, message, user_data); - else if (dbus_message_is_method_call (message, SPI_DBUS_INTERFACE_REGISTRY, "registerApplication")) - impl_registerApplication (bus, message, user_data); - else if (dbus_message_is_method_call (message, SPI_DBUS_INTERFACE_REGISTRY, "deregisterApplication")) - impl_deregisterApplication (bus, message, user_data); - else - res = DBUS_HANDLER_RESULT_NOT_YET_HANDLED; - - if (reply) - { - dbus_connection_send (bus, reply, NULL); - dbus_message_unref (reply); - } - return res; -} - -/*---------------------------------------------------------------------------*/ - static void -handle_disconnection (DBusConnection *bus, SpiRegistry *reg, DBusMessage *message) +handle_disconnection (DBusConnection *bus, DBusMessage *message, void *user_data) { char *name, *old, *new; + SpiRegistry *reg = SPI_REGISTRY (user_data); if (dbus_message_get_args (message, NULL, DBUS_TYPE_STRING, &name, @@ -260,8 +227,10 @@ handle_disconnection (DBusConnection *bus, SpiRegistry *reg, DBusMessage *messag } } +/*---------------------------------------------------------------------------*/ + static DBusHandlerResult -signal_handler (DBusConnection *bus, DBusMessage *message, void *user_data) +signal_filter (DBusConnection *bus, DBusMessage *message, void *user_data) { SpiRegistry *registry = SPI_REGISTRY (user_data); guint res = DBUS_HANDLER_RESULT_HANDLED; @@ -269,7 +238,7 @@ signal_handler (DBusConnection *bus, DBusMessage *message, void *user_data) const char *member = dbus_message_get_member (message); if (!g_strcmp0(iface, DBUS_INTERFACE_DBUS) && !g_strcmp0(member, "NameOwnerChanged")) - handle_disconnection (bus, registry, message); + handle_disconnection (bus, message, user_data); else res = DBUS_HANDLER_RESULT_NOT_YET_HANDLED; @@ -278,31 +247,38 @@ signal_handler (DBusConnection *bus, DBusMessage *message, void *user_data) /*---------------------------------------------------------------------------*/ -static gchar *app_reg_sig_match = "type='signal', interface='org.freedesktop.atspi.Tree', member='registerApplication'"; -static gchar *app_dereg_sig_match = "type='signal', interface='org.freedesktop.atspi.Tree', member='deregisterApplication'"; - -static gchar *app_sig_match_blank = ""; +static gchar *app_sig_match_name_owner = + "type='signal', interface='org.freedesktop.DBus', member='NameOwnerChanged'"; -static DBusObjectPathVTable reg_vtable = +static DRouteMethod dev_methods[] = { - NULL, - &message_handler, - NULL, NULL, NULL, NULL + { impl_getApplications, "getApplications" }, + { impl_registerApplication, "registerApplication" }, + { impl_deregisterApplication, "deregisterApplication" }, + { NULL, NULL } }; SpiRegistry * -spi_registry_new (DBusConnection *bus) +spi_registry_new (DBusConnection *bus, DRouteContext *droute) { SpiRegistry *reg = g_object_new (SPI_REGISTRY_TYPE, NULL); + DRoutePath *path; reg->bus = bus; - dbus_connection_register_object_path(bus, SPI_DBUS_PATH_REGISTRY, ®_vtable, reg); + dbus_bus_add_match (bus, app_sig_match_name_owner, NULL); + dbus_connection_add_filter (bus, signal_filter, reg, NULL); - //dbus_bus_add_match (bus, app_reg_sig_match, NULL); - //dbus_bus_add_match (bus, app_dereg_sig_match, NULL); - dbus_bus_add_match (bus, app_sig_match_blank, NULL); - dbus_connection_add_filter (bus, signal_handler, reg, NULL); + path = droute_add_one (droute, + SPI_DBUS_PATH_REGISTRY, + reg); + + droute_path_add_interface (path, + SPI_DBUS_INTERFACE_REGISTRY, + dev_methods, + NULL); return reg; } + +/*END------------------------------------------------------------------------*/