summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Gorse <mgorse@alum.wpi.edu>2019-08-14 16:36:32 -0500
committerMike Gorse <mgorse@alum.wpi.edu>2019-08-14 16:36:32 -0500
commitf603c8e4d9f00a9c046fbf4e02458308e9720d22 (patch)
treee9ad45996ec9737bc18278f91db732f0c0c6b794
parentf38fed479a6b9ae3df5bef71a609b6e8accfd84e (diff)
downloadat-spi2-atk-f603c8e4d9f00a9c046fbf4e02458308e9720d22.tar.gz
Defer application registration via an idle callback
A python application, for instance, may initialize gtk but not enter the main loop. It would, thus, register with the AT-SPI registry but not be responsive to queries. Putting registration into an idle callback ensures that, if a program never enters the main loop, then it won't register. Fixes https://gitlab.gnome.org/GNOME/at-spi2-core/issues/16
-rw-r--r--atk-adaptor/bridge.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/atk-adaptor/bridge.c b/atk-adaptor/bridge.c
index 3363b4e..c8ca861 100644
--- a/atk-adaptor/bridge.c
+++ b/atk-adaptor/bridge.c
@@ -404,8 +404,9 @@ register_reply (DBusPendingCall *pending, void *user_data)
}
static gboolean
-register_application (SpiBridge * app)
+register_application (gpointer data)
{
+ SpiBridge * app = data;
DBusMessage *message;
DBusMessageIter iter;
DBusPendingCall *pending;
@@ -441,7 +442,7 @@ register_application (SpiBridge * app)
if (message)
dbus_message_unref (message);
- return TRUE;
+ return FALSE;
}
/*---------------------------------------------------------------------------*/
@@ -1102,7 +1103,7 @@ atk_bridge_adaptor_init (gint * argc, gchar ** argv[])
/* Register this app by sending a signal out to AT-SPI registry daemon */
if (!atspi_no_register && (!root || !ATK_IS_PLUG (root)))
- register_application (spi_global_app_data);
+ g_idle_add (register_application, spi_global_app_data);
else
get_registered_event_listeners (spi_global_app_data);