Hello community,
here is the log from the commit of package at-spi2-core for openSUSE:Factory
checked in at Wed Jun 1 09:35:00 CEST 2011.
--------
--- GNOME/at-spi2-core/at-spi2-core.changes 2011-04-26 17:56:44.000000000 +0200
+++ /mounts/work_src_done/STABLE/at-spi2-core/at-spi2-core.changes 2011-05-30 16:04:52.000000000 +0200
@@ -1,0 +2,24 @@
+Mon May 30 14:02:05 UTC 2011 - fcrozat@novell.com
+
+- Update to version 2.0.2:
+ + bgo#648942: fixed a seg fault in at-spi-bus-launcher when
+ ending a session.
+ + Fixed a possible crash when an application is short-lived.
+ + Fixed memory leaks in
+ atspi_accessible_get_toolkit_(name|version).
+ + AT-SPI will now call g_error if it is unable to find the
+ accessibility bus. This results in aborting but with a somewhat
+ less cryptic error than before.
+ + Fix atspi_table_get_caption|summary.
+ + Fix introspection for atspi_table_get_row_column_at_index.
+ + Copy match rule attributes, rather than just ref counting the
+ hash, for compatibility with pygi.
+ + Rework atspi_accessible_set_cache_mask to make it usable.
+ + Fix a crash that might happen if a method call times out.
+ + Disable caching if atspi_event_main has not been called to run
+ the main loop.
+ + Fix atspi_accessible_get_toolkit_version.
+ + Add atspi_accessible_get_atspi_version to fetch the version of
+ the AT-SPI specification provided by an application.
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
at-spi2-core-2.0.1.tar.bz2
New:
----
at-spi2-core-2.0.2.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ at-spi2-core.spec ++++++
--- /var/tmp/diff_new_pack.dbZY66/_old 2011-06-01 09:34:41.000000000 +0200
+++ /var/tmp/diff_new_pack.dbZY66/_new 2011-06-01 09:34:41.000000000 +0200
@@ -18,7 +18,7 @@
Name: at-spi2-core
-Version: 2.0.1
+Version: 2.0.2
Release: 1
Summary: Assistive Technology Service Provider Interface - D-Bus based implementation
License: GPLv2+
++++++ at-spi2-core-2.0.1.tar.bz2 -> at-spi2-core-2.0.2.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/at-spi2-core-2.0.1/NEWS new/at-spi2-core-2.0.2/NEWS
--- old/at-spi2-core-2.0.1/NEWS 2011-04-26 00:15:52.000000000 +0200
+++ new/at-spi2-core-2.0.2/NEWS 2011-05-24 01:36:09.000000000 +0200
@@ -1,3 +1,32 @@
+What's new in at-spi2-core 2.0.2:
+
+* Fixed a seg fault in at-spi-bus-launcher when ending a session (BGO#648942).
+
+* Fixed a possible crash when an application is short-lived.
+
+* FIxed memory leaks in atspi_accessible_get_toolkit_(name|version).
+
+* AT-SPI will now call g_error if it is unable to find the accessibility bus.
+ This results in aborting but with a somewhat less cryptic error than before.
+
+* Fix atspi_table_get_caption|summary.
+
+* Fix introspection for atspi_table_get_row_column_at_index.
+
+* Copy match rule attributes, rather than just ref counting the hash, for
+ compatibility with pygi.
+
+* Rework atspi_accessible_set_cache_mask to make it usable.
+
+* Fix a crash that might happen if a method call times out.
+
+* Disable caching if atspi_event_main has not been called to run the main loop.
+
+* Fix atspi_accessible_get_toolkit_version.
+
+* Add atspi_accessible_get_atspi_version to fetch the version of the AT-SPI
+ specification provided by an application.
+
What's new in at-spi2-core 2.0.1:
* Fix a memory leak when sending events.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/at-spi2-core-2.0.1/atspi/atspi-accessible.c new/at-spi2-core-2.0.2/atspi/atspi-accessible.c
--- old/at-spi2-core-2.0.1/atspi/atspi-accessible.c 2011-04-18 22:36:03.000000000 +0200
+++ new/at-spi2-core-2.0.2/atspi/atspi-accessible.c 2011-05-24 01:32:20.000000000 +0200
@@ -307,7 +307,7 @@
atspi_accessible_get_name (AtspiAccessible *obj, GError **error)
{
g_return_val_if_fail (obj != NULL, g_strdup (""));
- if (!(obj->cached_properties & ATSPI_CACHE_NAME))
+ if (!_atspi_accessible_test_cache (obj, ATSPI_CACHE_NAME))
{
if (!_atspi_dbus_get_property (obj, atspi_interface_accessible, "Name", error,
"s", &obj->name))
@@ -331,7 +331,7 @@
{
g_return_val_if_fail (obj != NULL, g_strdup (""));
- if (!(obj->cached_properties & ATSPI_CACHE_DESCRIPTION))
+ if (!_atspi_accessible_test_cache (obj, ATSPI_CACHE_DESCRIPTION))
{
if (!_atspi_dbus_get_property (obj, atspi_interface_accessible,
"Description", error, "s",
@@ -360,7 +360,8 @@
{
g_return_val_if_fail (obj != NULL, NULL);
- if (obj->parent.app && !(obj->cached_properties & ATSPI_CACHE_PARENT))
+ if (obj->parent.app &&
+ !_atspi_accessible_test_cache (obj, ATSPI_CACHE_PARENT))
{
DBusMessage *message, *reply;
DBusMessageIter iter, iter_variant;
@@ -406,7 +407,7 @@
{
g_return_val_if_fail (obj != NULL, -1);
- if (!(obj->cached_properties & ATSPI_CACHE_CHILDREN))
+ if (!_atspi_accessible_test_cache (obj, ATSPI_CACHE_CHILDREN))
{
dbus_int32_t ret;
if (!_atspi_dbus_get_property (obj, atspi_interface_accessible,
@@ -437,7 +438,7 @@
g_return_val_if_fail (obj != NULL, NULL);
- if (!(obj->cached_properties & ATSPI_CACHE_CHILDREN))
+ if (!_atspi_accessible_test_cache (obj, ATSPI_CACHE_CHILDREN))
{
DBusMessage *reply;
reply = _atspi_dbus_call_partial (obj, atspi_interface_accessible,
@@ -470,7 +471,8 @@
g_return_val_if_fail (obj != NULL, -1);
if (!obj->accessible_parent) return -1;
- if (!(obj->accessible_parent->cached_properties & ATSPI_CACHE_CHILDREN))
+ if (!_atspi_accessible_test_cache (obj->accessible_parent,
+ ATSPI_CACHE_CHILDREN))
{
dbus_uint32_t ret = -1;
_atspi_dbus_call (obj, atspi_interface_accessible,
@@ -550,7 +552,7 @@
{
g_return_val_if_fail (obj != NULL, ATSPI_ROLE_INVALID);
- if (!(obj->cached_properties & ATSPI_CACHE_ROLE))
+ if (!_atspi_accessible_test_cache (obj, ATSPI_CACHE_ROLE))
{
dbus_uint32_t role;
/* TODO: Make this a property */
@@ -639,7 +641,7 @@
return defunct_set ();
- if (!(obj->cached_properties & ATSPI_CACHE_STATES))
+ if (!_atspi_accessible_test_cache (obj, ATSPI_CACHE_STATES))
{
DBusMessage *reply;
DBusMessageIter iter;
@@ -763,7 +765,7 @@
if (!_atspi_dbus_get_property (obj, atspi_interface_application, "ToolkitName", error, "s", &ret))
return NULL;
- return g_strdup (ret);
+ return ret;
}
/**
@@ -783,9 +785,32 @@
g_return_val_if_fail (obj != NULL, NULL);
- if (!_atspi_dbus_get_property (obj, atspi_interface_application, "ToolkitVersion", error, "s", &ret))
+ if (!_atspi_dbus_get_property (obj, atspi_interface_application, "Version", error, "s", &ret))
return NULL;
- return g_strdup (ret);
+ return ret;
+}
+
+/**
+ * atspi_accessible_get_atspi_version:
+ * @obj: a pointer to the #AtspiAccessible object on which to operate.
+ *
+ * Get the AT-SPI IPC specification version supported by the application
+ * pointed to by the #AtspiAccessible object.
+ * Only works on application root objects.
+ *
+ * Returns: a UTF-8 string indicating the AT-SPI ersion for the #AtspiAccessible object.
+ * or NULL on exception
+ **/
+gchar *
+atspi_accessible_get_atspi_version (AtspiAccessible *obj, GError **error)
+{
+ gchar *ret = NULL;
+
+ g_return_val_if_fail (obj != NULL, NULL);
+
+ if (!_atspi_dbus_get_property (obj, atspi_interface_application, "AtspiVersion", error, "s", &ret))
+ return NULL;
+ return ret;
}
/**
* atspi_accessible_get_toolkit_version:
@@ -823,7 +848,7 @@
return FALSE;
}
- if (!(accessible->cached_properties & ATSPI_CACHE_INTERFACES))
+ if (!_atspi_accessible_test_cache (accessible, ATSPI_CACHE_INTERFACES))
{
DBusMessage *reply;
DBusMessageIter iter;
@@ -1356,7 +1381,7 @@
*
* @accessible: The #AtspiAccessible to operate on. Must be the desktop or
* the root of an application.
- * @mask: An #AtspiCache specifying a bit mask of the types of data to cache.
+ * @mask: (type int): An #AtspiCache specifying a bit mask of the types of data to cache.
*
* Sets the type of data to cache for accessibles.
* If this is not set for an application or is reset to ATSPI_CACHE_UNDEFINED,
@@ -1365,8 +1390,6 @@
* be cached.
* This function is intended to work around bugs in toolkits where the proper
* events are not raised / to aid in testing for such bugs.
- *
- * Note: This function has no effect on data that has already been cached.
**/
void
atspi_accessible_set_cache_mask (AtspiAccessible *accessible, AtspiCache mask)
@@ -1377,11 +1400,15 @@
accessible->parent.app->cache = mask;
}
-void
-_atspi_accessible_add_cache (AtspiAccessible *accessible, AtspiCache flag)
+static AtspiCache
+_atspi_accessible_get_cache_mask (AtspiAccessible *accessible)
{
- AtspiCache mask = accessible->parent.app->cache;
+ AtspiCache mask;
+
+ if (!accessible->parent.app)
+ return ATSPI_CACHE_NONE;
+ mask = accessible->parent.app->cache;
if (mask == ATSPI_CACHE_UNDEFINED &&
accessible->parent.app->root &&
accessible->parent.app->root->accessible_parent)
@@ -1394,5 +1421,21 @@
if (mask == ATSPI_CACHE_UNDEFINED)
mask = ATSPI_CACHE_ALL;
+ return mask;
+}
+
+gboolean
+_atspi_accessible_test_cache (AtspiAccessible *accessible, AtspiCache flag)
+{
+ AtspiCache mask = _atspi_accessible_get_cache_mask (accessible);
+ AtspiCache result = accessible->cached_properties & mask & flag;
+ return (result != 0 && atspi_main_loop);
+}
+
+void
+_atspi_accessible_add_cache (AtspiAccessible *accessible, AtspiCache flag)
+{
+ AtspiCache mask = _atspi_accessible_get_cache_mask (accessible);
+
accessible->cached_properties |= flag & mask;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/at-spi2-core-2.0.1/atspi/atspi-accessible.h new/at-spi2-core-2.0.2/atspi/atspi-accessible.h
--- old/at-spi2-core-2.0.1/atspi/atspi-accessible.h 2011-04-18 22:35:51.000000000 +0200
+++ new/at-spi2-core-2.0.2/atspi/atspi-accessible.h 2011-05-24 01:32:12.000000000 +0200
@@ -97,6 +97,8 @@
gchar * atspi_accessible_get_toolkit_version (AtspiAccessible *obj, GError **error);
+gchar * atspi_accessible_get_atspi_version (AtspiAccessible *obj, GError **error);
+
gint atspi_accessible_get_id (AtspiAccessible *obj, GError **error);
AtspiAccessible * atspi_accessible_get_application (AtspiAccessible *obj, GError **error);
@@ -131,4 +133,5 @@
/* private */
void _atspi_accessible_add_cache (AtspiAccessible *accessible, AtspiCache flag);
+gboolean _atspi_accessible_test_cache (AtspiAccessible *accessible, AtspiCache flag);
#endif /* _ATSPI_ACCESSIBLE_H_ */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/at-spi2-core-2.0.1/atspi/atspi-constants.h new/at-spi2-core-2.0.2/atspi/atspi-constants.h
--- old/at-spi2-core-2.0.1/atspi/atspi-constants.h 2011-03-03 17:45:08.000000000 +0100
+++ new/at-spi2-core-2.0.2/atspi/atspi-constants.h 2011-05-23 01:41:28.000000000 +0200
@@ -761,7 +761,7 @@
typedef enum
{
- ATSPI_CACHE_NONE = 0x0001,
+ ATSPI_CACHE_NONE = 0x0000,
ATSPI_CACHE_PARENT = 0x0001,
ATSPI_CACHE_CHILDREN = 0x0002,
ATSPI_CACHE_NAME = 0x0004,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/at-spi2-core-2.0.1/atspi/atspi-matchrule.c new/at-spi2-core-2.0.2/atspi/atspi-matchrule.c
--- old/at-spi2-core-2.0.1/atspi/atspi-matchrule.c 2011-02-01 00:40:07.000000000 +0100
+++ new/at-spi2-core-2.0.2/atspi/atspi-matchrule.c 2011-05-17 21:00:54.000000000 +0200
@@ -60,6 +60,9 @@
if (rule->interfaces)
g_array_free (rule->interfaces, TRUE);
+ if (rule->attributes)
+ g_hash_table_unref (rule->attributes);
+
G_OBJECT_CLASS (atspi_match_rule_parent_class)->finalize (object);
}
@@ -119,8 +122,19 @@
rule->statematchtype = statematchtype;
if (attributes)
- rule->attributes = g_hash_table_ref (attributes);
- rule->attributematchtype = attributematchtype;
+ {
+ GHashTableIter hash_table_iter;
+ gchar *key, *value;
+ rule->attributes = g_hash_table_new_full (g_str_hash, g_str_equal,
+ (GDestroyNotify) g_free,
+ (GDestroyNotify) g_free);
+ g_hash_table_iter_init (&hash_table_iter, attributes);
+ while (g_hash_table_iter_next (&hash_table_iter, (gpointer *)&key,
+ (gpointer *)&value))
+ g_hash_table_insert (rule->attributes, g_strdup (key), g_strdup (value));
+ } else
+ rule->attributes = NULL;
+ rule->attributematchtype = attributematchtype;
if (interfaces)
rule->interfaces = g_array_ref (interfaces);
@@ -147,7 +161,7 @@
}
static void
-append_entry (gpointer *key, gpointer *val, gpointer data)
+append_entry (gpointer key, gpointer val, gpointer data)
{
DBusMessageIter *iter = data;
DBusMessageIter iter_entry;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/at-spi2-core-2.0.1/atspi/atspi-misc-private.h new/at-spi2-core-2.0.2/atspi/atspi-misc-private.h
--- old/at-spi2-core-2.0.1/atspi/atspi-misc-private.h 2011-02-01 00:40:07.000000000 +0100
+++ new/at-spi2-core-2.0.2/atspi/atspi-misc-private.h 2011-05-24 01:32:20.000000000 +0200
@@ -181,4 +181,6 @@
ATSPI_ERROR_APPLICATION_GONE,
ATSPI_ERROR_IPC
} AtspiError;
+
+extern GMainLoop *atspi_main_loop;
#endif /* _ATSPI_MISC_PRIVATE_H_ */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/at-spi2-core-2.0.1/atspi/atspi-misc.c new/at-spi2-core-2.0.2/atspi/atspi-misc.c
--- old/at-spi2-core-2.0.1/atspi/atspi-misc.c 2011-04-08 23:04:30.000000000 +0200
+++ new/at-spi2-core-2.0.2/atspi/atspi-misc.c 2011-05-24 01:32:20.000000000 +0200
@@ -39,6 +39,8 @@
static DBusConnection *bus = NULL;
static GHashTable *live_refs = NULL;
+GMainLoop *atspi_main_loop;
+
const char *atspi_path_dec = ATSPI_DBUS_PATH_DEC;
const char *atspi_path_registry = ATSPI_DBUS_PATH_REGISTRY;
const char *atspi_path_root = ATSPI_DBUS_PATH_ROOT;
@@ -162,6 +164,9 @@
dbus_message_unref (reply);
dbus_pending_call_unref (pending);
+ if (!app->bus)
+ return; /* application has gone away / been disposed */
+
message = dbus_message_new_method_call (app->bus_name,
"/org/a11y/atspi/cache",
atspi_interface_cache, "GetItems");
@@ -856,8 +861,6 @@
return 0;
}
- static GMainLoop *mainloop;
-
/**
* atspi_event_main:
*
@@ -870,8 +873,9 @@
void
atspi_event_main (void)
{
- mainloop = g_main_loop_new (NULL, FALSE);
- g_main_loop_run (mainloop);
+ atspi_main_loop = g_main_loop_new (NULL, FALSE);
+ g_main_loop_run (atspi_main_loop);
+ atspi_main_loop = NULL;
}
/**
@@ -883,7 +887,7 @@
void
atspi_event_quit (void)
{
- g_main_loop_quit (mainloop);
+ g_main_loop_quit (atspi_main_loop);
}
/**
@@ -1016,6 +1020,7 @@
DBusError err;
dbus_bool_t retval = FALSE;
AtspiObject *aobj = ATSPI_OBJECT (obj);
+ char expected_type = (type [0] == '(' ? 'r' : type [0]);
if (!aobj)
return FALSE;
@@ -1063,7 +1068,7 @@
goto done;
}
dbus_message_iter_recurse (&iter, &iter_variant);
- if (dbus_message_iter_get_arg_type (&iter_variant) != type[0])
+ if (dbus_message_iter_get_arg_type (&iter_variant) != expected_type)
{
g_warning (_("atspi_dbus_get_property: Wrong type: expected %s, got %c\n"), type, dbus_message_iter_get_arg_type (&iter_variant));
goto done;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/at-spi2-core-2.0.1/atspi/atspi-table.c new/at-spi2-core-2.0.2/atspi/atspi-table.c
--- old/at-spi2-core-2.0.1/atspi/atspi-table.c 2011-03-15 20:32:59.000000000 +0100
+++ new/at-spi2-core-2.0.2/atspi/atspi-table.c 2011-05-17 23:22:10.000000000 +0200
@@ -618,15 +618,15 @@
* @obj: a pointer to the #AtspiTable implementor on which to operate.
* @index: the index of the Table child whose row/column
* extents are requested.
- * @row: back-filled with the first table row associated with
+ * @row: (out): back-filled with the first table row associated with
* the cell with child index \c index.
- * @col: back-filled with the first table column associated
+ * @col: (out): back-filled with the first table column associated
* with the cell with child index \c index.
- * @row_extents: back-filled with the number of table rows
+ * @row_extents: (out): back-filled with the number of table rows
* across which child \c i extends.
- * @col_extents: back-filled with the number of table columns
+ * @col_extents: (out): back-filled with the number of table columns
* across which child \c i extends.
- * @is_selected: a boolean which is back-filled with \c True
+ * @is_selected: (out): a boolean which is back-filled with \c True
* if the child at index \c i corresponds to a selected table cell,
* \c False otherwise.
*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/at-spi2-core-2.0.1/bus/at-spi-bus-launcher.c new/at-spi2-core-2.0.2/bus/at-spi-bus-launcher.c
--- old/at-spi2-core-2.0.1/bus/at-spi-bus-launcher.c 2011-04-03 05:12:20.000000000 +0200
+++ new/at-spi2-core-2.0.2/bus/at-spi-bus-launcher.c 2011-05-04 21:41:24.000000000 +0200
@@ -398,11 +398,12 @@
XDeleteProperty (display,
XDefaultRootWindow (display),
bus_address_atom);
+
+ XFlush (display);
+ XCloseDisplay (display);
}
- XFlush (display);
- XCloseDisplay (display);
}
-
+
if (_global_app->a11y_launch_error_message)
{
g_printerr ("Failed to launch bus: %s", _global_app->a11y_launch_error_message);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/at-spi2-core-2.0.1/configure new/at-spi2-core-2.0.2/configure
--- old/at-spi2-core-2.0.1/configure 2011-04-26 00:25:16.000000000 +0200
+++ new/at-spi2-core-2.0.2/configure 2011-05-24 01:36:19.000000000 +0200
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for at-spi2-core 2.0.1.
+# Generated by GNU Autoconf 2.68 for at-spi2-core 2.0.2.
#
# Report bugs to