From 1e387e9117609bac3453ae8ea56f26524cda2d6d Mon Sep 17 00:00:00 2001 From: Bilal Elmoussaoui Date: Fri, 2 Aug 2024 15:34:27 +0200 Subject: [PATCH] clutter/actor: Cache the accessible object Helpful for merging Cally inside Clutter, see next commits Part-of: --- clutter/clutter/cally/cally-root.c | 1 - clutter/clutter/clutter-actor.c | 8 +++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/clutter/clutter/cally/cally-root.c b/clutter/clutter/cally/cally-root.c index 2b1abc798..0281e5a03 100644 --- a/clutter/clutter/cally/cally-root.c +++ b/clutter/clutter/cally/cally-root.c @@ -160,7 +160,6 @@ cally_root_ref_child (AtkObject *obj, if (accessible_item) g_object_ref (accessible_item); - /* TODO: cache the accessible object */ return accessible_item; } diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c index f8efb0fb8..dd18dcd40 100644 --- a/clutter/clutter/clutter-actor.c +++ b/clutter/clutter/clutter-actor.c @@ -545,6 +545,9 @@ struct _ClutterActorPrivate { ClutterContext *context; + /* Accessibility */ + AtkObject *accessible; + /* request mode */ ClutterRequestMode request_mode; @@ -5434,7 +5437,10 @@ clutter_actor_get_accessible (ClutterActor *self) static AtkObject * clutter_actor_real_get_accessible (ClutterActor *actor) { - return atk_gobject_accessible_for_object (G_OBJECT (actor)); + if (actor->priv->accessible == NULL) + actor->priv->accessible = atk_gobject_accessible_for_object (G_OBJECT (actor)); + + return actor->priv->accessible; } static AtkObject *