From 8446bb61b53f2f2054d91954fe6e208d63ff140f Mon Sep 17 00:00:00 2001 From: Mike Gorse Date: Wed, 15 Apr 2009 08:44:11 -0500 Subject: [PATCH] 2009-04-15 Mike Gorse * atk-adaptor/accessible-marshaller.c: Return SPI_DBUS_PATH_NULL for a NULL object. Fix call to dbus_message_iter_append_basic. * atk-adaptor/accessible-register.c: * atk-adaptor/editabletext-adaptor.c: Have copyText return a value. * atk-adaptor/editabletext-adaptor.c: Fix uninitialized variable in getAttributeValue. Fix parameter type in getBoundedRanges, and open the appropriate container when returning a value. * value-adaptor.c: Return variants to conform with Properties iface. * droute/droute.c: Throw exception if get fails. When setting a property, correctly initialize the iter before reading. * registry/deviceeventcontroller.c: deviceListener -> deviceEventListener. * spi-common/spi-dbus.h: Set SPI_DBUS_PATH_NULL to /org/freedesktop/atspi/accessible/null. --- atk-adaptor/accessible-marshaller.c | 10 ++++++++-- atk-adaptor/editabletext-adaptor.c | 2 +- atk-adaptor/text-adaptor.c | 6 +++--- atk-adaptor/value-adaptor.c | 21 ++++++++++++--------- droute/droute.c | 8 ++++++-- registryd/deviceeventcontroller.c | 8 ++++---- spi-common/spi-dbus.h | 2 +- 7 files changed, 35 insertions(+), 22 deletions(-) diff --git a/atk-adaptor/accessible-marshaller.c b/atk-adaptor/accessible-marshaller.c index 6e9de23..30d6b33 100644 --- a/atk-adaptor/accessible-marshaller.c +++ b/atk-adaptor/accessible-marshaller.c @@ -40,15 +40,21 @@ spi_dbus_return_object (DBusMessage *message, AtkObject *obj, gboolean unref) path = atk_dbus_object_to_path (obj); - if (unref) + if (obj && unref) g_object_unref (obj); + if (!path) + path = g_strdup (SPI_DBUS_PATH_NULL); + reply = dbus_message_new_method_return (message); if (reply) { - dbus_message_append_args (reply, DBUS_TYPE_OBJECT_PATH, path, + dbus_message_append_args (reply, DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_INVALID); } + + g_free (path); + return reply; } diff --git a/atk-adaptor/editabletext-adaptor.c b/atk-adaptor/editabletext-adaptor.c index ce0f8e3..4f2f484 100644 --- a/atk-adaptor/editabletext-adaptor.c +++ b/atk-adaptor/editabletext-adaptor.c @@ -138,7 +138,7 @@ impl_copyText (DBusConnection * bus, DBusMessage * message, void *user_data) return droute_invalid_arguments_error (message); } atk_editable_text_copy_text (editable, startPos, endPos); - return NULL; + return dbus_message_new_method_return (message); } static DBusMessage * diff --git a/atk-adaptor/text-adaptor.c b/atk-adaptor/text-adaptor.c index ebbea28..ae3eed6 100644 --- a/atk-adaptor/text-adaptor.c +++ b/atk-adaptor/text-adaptor.c @@ -262,7 +262,7 @@ impl_getAttributeValue (DBusConnection * bus, DBusMessage * message, dbus_int32_t startOffset, endOffset; dbus_bool_t defined; gint intstart_offset = 0, intend_offset = 0; - char *rv; + char *rv = NULL; DBusError error; DBusMessage *reply; AtkAttributeSet *set; @@ -667,7 +667,7 @@ impl_getBoundedRanges (DBusConnection * bus, DBusMessage * message, dbus_error_init (&error); if (!dbus_message_get_args (message, &error, DBUS_TYPE_INT32, &x, DBUS_TYPE_INT32, &y, - DBUS_TYPE_INT32, &height, DBUS_TYPE_INT32, &width, DBUS_TYPE_INT32, + DBUS_TYPE_INT32, &height, DBUS_TYPE_INT32, &width, DBUS_TYPE_INT16, &coordType, DBUS_TYPE_INT32, &xClipType, DBUS_TYPE_INT32, &yClipType, DBUS_TYPE_INVALID)) { @@ -707,7 +707,7 @@ impl_getBoundedRanges (DBusConnection * bus, DBusMessage * message, * unilaterally muck with the spec and remove it, so I'll just * throw in a dummy value */ if (dbus_message_iter_open_container - (&array, DBUS_TYPE_VARIANT, "i", &variant)) + (&struc, DBUS_TYPE_VARIANT, "i", &variant)) { dbus_uint32_t dummy = 0; dbus_message_iter_append_basic (&variant, DBUS_TYPE_INT32, diff --git a/atk-adaptor/value-adaptor.c b/atk-adaptor/value-adaptor.c index 4c0c8d8..68631de 100644 --- a/atk-adaptor/value-adaptor.c +++ b/atk-adaptor/value-adaptor.c @@ -46,8 +46,7 @@ impl_get_minimumValue (DBusMessageIter * iter, if (g_value_transform (&src, &dest)) { dub = g_value_get_double (&dest); - dbus_message_iter_append_basic (iter, DBUS_TYPE_DOUBLE, &dub); - return TRUE; + return droute_return_v_double (iter, dub); } else { @@ -72,8 +71,7 @@ impl_get_maximumValue (DBusMessageIter * iter, if (g_value_transform (&src, &dest)) { dub = g_value_get_double (&dest); - dbus_message_iter_append_basic (iter, DBUS_TYPE_DOUBLE, &dub); - return TRUE; + return droute_return_v_double (iter, dub); } else { @@ -98,8 +96,7 @@ impl_get_minimumIncrement (DBusMessageIter * iter, if (g_value_transform (&src, &dest)) { dub = g_value_get_double (&dest); - dbus_message_iter_append_basic (iter, DBUS_TYPE_DOUBLE, &dub); - return TRUE; + return droute_return_v_double (iter, dub); } else { @@ -124,8 +121,7 @@ impl_get_currentValue (DBusMessageIter * iter, if (g_value_transform (&src, &dest)) { dub = g_value_get_double (&dest); - dbus_message_iter_append_basic (iter, DBUS_TYPE_DOUBLE, &dub); - return TRUE; + return droute_return_v_double (iter, dub); } else { @@ -141,10 +137,17 @@ impl_set_currentValue (DBusMessageIter * iter, GValue src = {0}; GValue dest = {0}; gdouble dub; + DBusMessageIter iter_variant; g_return_val_if_fail (ATK_IS_VALUE (user_data), FALSE); - dbus_message_iter_get_basic (iter, &dub); + dbus_message_iter_recurse (iter, &iter_variant); + if (dbus_message_iter_get_arg_type (&iter_variant) != DBUS_TYPE_DOUBLE) + { + G_WARNING ("TODO: Support setting value from a non-double"); + return FALSE; + } + dbus_message_iter_get_basic (&iter_variant, &dub); g_value_init (&src, G_TYPE_DOUBLE); g_value_set_double (&src, dub); diff --git a/droute/droute.c b/droute/droute.c index 5b749ae..23365ef 100644 --- a/droute/droute.c +++ b/droute/droute.c @@ -323,7 +323,11 @@ impl_prop_GetSet (DBusMessage *message, reply = dbus_message_new_method_return (message); dbus_message_iter_init_append (reply, &iter); - (prop_funcs->get) (&iter, datum); + if (!(prop_funcs->get) (&iter, datum)) + { + dbus_message_unref (reply); + reply = dbus_message_new_error (message, DBUS_ERROR_FAILED, "Get failed"); + } } else if (!get && prop_funcs->set) { @@ -332,7 +336,7 @@ impl_prop_GetSet (DBusMessage *message, _DROUTE_DEBUG ("DRoute (handle prop Get): %s|%s on %s\n", pair.one, pair.two, pathstr); - dbus_message_iter_init_append (message, &iter); + dbus_message_iter_init (message, &iter); /* Skip the interface and property name */ dbus_message_iter_next(&iter); dbus_message_iter_next(&iter); diff --git a/registryd/deviceeventcontroller.c b/registryd/deviceeventcontroller.c index af4567b..4c06215 100644 --- a/registryd/deviceeventcontroller.c +++ b/registryd/deviceeventcontroller.c @@ -1895,7 +1895,7 @@ impl_register_keystroke_listener (DBusConnection *bus, * method implementation */ static DBusMessage * -impl_register_device_listener (DBusConnection *bus, +impl_register_device_event_listener (DBusConnection *bus, DBusMessage *message, void *user_data) { @@ -2084,7 +2084,7 @@ impl_deregister_keystroke_listener (DBusConnection *bus, * method implementation */ static DBusMessage * -impl_deregister_device_listener (DBusConnection *bus, +impl_deregister_device_event_listener (DBusConnection *bus, DBusMessage *message, void *user_data) { @@ -2747,9 +2747,9 @@ static void wait_for_release_event (XEvent *event, static DRouteMethod dev_methods[] = { { impl_register_keystroke_listener, "registerKeystrokeListener" }, - { impl_register_device_listener, "registerDeviceListener" }, + { impl_register_device_event_listener, "registerDeviceEventListener" }, { impl_deregister_keystroke_listener, "deregisterKeystrokeListener" }, - { impl_deregister_device_listener, "deregisterDeviceListener" }, + { impl_deregister_device_event_listener, "deregisterDeviceEventListener" }, { impl_generate_keyboard_event, "generateKeyboardEvent" }, { impl_generate_mouse_event, "generateMouseEvent" }, { impl_notify_listeners_sync, "notifyListenersSync" }, diff --git a/spi-common/spi-dbus.h b/spi-common/spi-dbus.h index ae4696e..1324d5b 100644 --- a/spi-common/spi-dbus.h +++ b/spi-common/spi-dbus.h @@ -55,7 +55,7 @@ extern int _dbg; #define SPI_DBUS_INTERFACE_VALUE "org.freedesktop.atspi.Value" #define SPI_DBUS_NAME_REGISTRY "org.freedesktop.atspi.Registry" #define SPI_DBUS_PATH_DESKTOP "/org/freedesktop/atspi/registry/desktop" -#define SPI_DBUS_PATH_NULL "/" +#define SPI_DBUS_PATH_NULL "/org/freedesktop/accessible/null" #define SPI_DBUS_PATH_REGISTRY "/org/freedesktop/atspi/registry" DBusMessage *spi_dbus_general_error(DBusMessage *message); -- 2.7.4