[at-spi2-core] Fix lifecycle of an accessible's cache
- From: Mike Gorse <mgorse src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [at-spi2-core] Fix lifecycle of an accessible's cache
- Date: Sun, 20 Jul 2014 17:48:45 +0000 (UTC)
commit f33fd585e1e18eacec271582ffb9956965a4f146
Author: Mike Gorse <mgorse suse com>
Date: Sat Jul 19 16:26:52 2014 -0500
Fix lifecycle of an accessible's cache
When a cache is referenced in response to an event, it is supposed
to be unref'd after the event handler has been called.
atspi/atspi-accessible.c | 3 ++-
atspi/atspi-event-listener.c | 2 +-
atspi/atspi-misc-private.h | 2 +-
atspi/atspi-misc.c | 4 +++-
4 files changed, 7 insertions(+), 4 deletions(-)
---
diff --git a/atspi/atspi-accessible.c b/atspi/atspi-accessible.c
index 23aad90..b294a5d 100644
--- a/atspi/atspi-accessible.c
+++ b/atspi/atspi-accessible.c
@@ -190,7 +190,8 @@ atspi_accessible_finalize (GObject *object)
if (accessible->attributes)
g_hash_table_unref (accessible->attributes);
- _atspi_accessible_unref_cache (accessible);
+ if (accessible->priv->cache)
+ g_hash_table_destroy (accessible->priv->cache);
#ifdef DEBUG_REF_COUNTS
accessible_count--;
diff --git a/atspi/atspi-event-listener.c b/atspi/atspi-event-listener.c
index 09ccfd3..292e88b 100644
--- a/atspi/atspi-event-listener.c
+++ b/atspi/atspi-event-listener.c
@@ -1038,7 +1038,7 @@ _atspi_dbus_handle_event (DBusConnection *bus, DBusMessage *message, void *data)
if (dbus_message_iter_get_arg_type (&iter) == DBUS_TYPE_ARRAY)
{
/* new form -- parse properties sent with event */
- _atspi_dbus_update_cache_from_dict (e.source, &iter);
+ cache = _atspi_dbus_update_cache_from_dict (e.source, &iter);
}
if (!strncmp (e.type, "object:children-changed", 23))
diff --git a/atspi/atspi-misc-private.h b/atspi/atspi-misc-private.h
index cd472b0..fe5ca56 100644
--- a/atspi/atspi-misc-private.h
+++ b/atspi/atspi-misc-private.h
@@ -159,7 +159,7 @@ GHashTable *_atspi_get_live_refs ();
gchar *_atspi_name_compat (gchar *in);
-void _atspi_dbus_update_cache_from_dict (AtspiAccessible *accessible, DBusMessageIter *iter);
+GHashTable *_atspi_dbus_update_cache_from_dict (AtspiAccessible *accessible, DBusMessageIter *iter);
gboolean _atspi_get_allow_sync ();
diff --git a/atspi/atspi-misc.c b/atspi/atspi-misc.c
index 0492b3f..f698544 100644
--- a/atspi/atspi-misc.c
+++ b/atspi/atspi-misc.c
@@ -1705,7 +1705,7 @@ atspi_role_get_name (AtspiRole role)
return NULL;
}
-void
+GHashTable *
_atspi_dbus_update_cache_from_dict (AtspiAccessible *accessible, DBusMessageIter *iter)
{
GHashTable *cache = _atspi_accessible_ref_cache (accessible);
@@ -1768,6 +1768,8 @@ _atspi_dbus_update_cache_from_dict (AtspiAccessible *accessible, DBusMessageIter
g_hash_table_insert (cache, g_strdup (key), val);
dbus_message_iter_next (&iter_dict);
}
+
+ return cache;
}
gboolean
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]