+static void
+spi_atk_register_toplevel_added (AtkObject *accessible,
+ guint index,
+ AtkObject *child)
+{
+ g_static_rec_mutex_lock (®istration_mutex);
+
+ g_return_if_fail (ATK_IS_OBJECT (accessible));
+
+ if (object_to_ref (accessible))
+ {
+#ifdef SPI_ATK_DEBUG
+ if (recursion_check_and_set ())
+ g_warning ("AT-SPI: Recursive use of registration module");
+
+ g_debug ("AT-SPI: Toplevel added listener");
+#endif
+ if (!ATK_IS_OBJECT (child))
+ {
+ child = atk_object_ref_accessible_child (accessible, index);
+#ifdef SPI_ATK_DEBUG
+ non_owned_accessible (child);
+#endif
+ }
+ register_subtree (child);
+ update_accessible (accessible);
+
+ recursion_check_unset ();
+ }
+
+ g_static_rec_mutex_unlock (®istration_mutex);
+}
+
+static void
+spi_atk_register_toplevel_removed (AtkObject *accessible,
+ guint index,
+ AtkObject *child)
+{
+ g_static_rec_mutex_lock (®istration_mutex);
+
+ g_return_if_fail (ATK_IS_OBJECT (accessible));
+
+ if (object_to_ref (accessible))
+ {
+#ifdef SPI_ATK_DEBUG
+ if (recursion_check_and_set ())
+ g_warning ("AT-SPI: Recursive use of registration module");
+
+ g_debug ("AT-SPI: Toplevel removed listener");
+#endif
+ update_accessible (accessible);
+ recursion_check_unset ();
+ }
+
+ g_static_rec_mutex_unlock (®istration_mutex);
+}
+