X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=atk-bridge%2Fbridge.c;h=6161b1912384bf4d3d9e742b313003e5404e9f33;hb=fc127cbb0f6101f0dc98416737d651c0cda2ca10;hp=9d0db85858aaca9d52db008478a61d3c280c2ef8;hpb=3983f0e6bc970c861bf5c637e49ec279c55642e5;p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git diff --git a/atk-bridge/bridge.c b/atk-bridge/bridge.c index 9d0db85..6161b19 100644 --- a/atk-bridge/bridge.c +++ b/atk-bridge/bridge.c @@ -147,6 +147,7 @@ static int atk_bridge_init (gint *argc, gchar **argv[]) { const char *debug_env_string = g_getenv ("AT_SPI_DEBUG"); + gchar *fname; if (atk_bridge_initialized) { @@ -154,8 +155,15 @@ atk_bridge_init (gint *argc, gchar **argv[]) } atk_bridge_initialized = TRUE; - if (debug_env_string) - _dbg = (int) g_ascii_strtod (debug_env_string, NULL); + if (g_getenv ("ATK_BRIDGE_REDIRECT_LOG")) + { + fname = g_strconcat ("/tmp/", g_get_prgname (), ".at-spi-log"); + freopen (fname, "w", stderr); + g_free (fname); + } + + if (debug_env_string) + _dbg = (int) g_ascii_strtod (debug_env_string, NULL); if (!bonobo_init (argc, argv ? *argv : NULL)) { @@ -261,6 +269,42 @@ spi_atk_bridge_register_application (Accessibility_Registry registry) &ev); } +/* + * Returns a 'canonicalized' value for DISPLAY, + * with the screen number stripped off if present. + */ +static const gchar* +spi_display_name (void) +{ + static const char *canonical_display_name = NULL; + if (!canonical_display_name) + { + const gchar *display_env = g_getenv ("AT_SPI_DISPLAY"); + if (!display_env) + { + display_env = g_getenv ("DISPLAY"); + if (!display_env || !display_env[0]) + canonical_display_name = ":0"; + else + { + gchar *display_p, *screen_p; + canonical_display_name = g_strdup (display_env); + display_p = strrchr (canonical_display_name, ':'); + screen_p = strrchr (canonical_display_name, '.'); + if (screen_p && display_p && ((guint) screen_p > (guint) display_p)) + { + *screen_p = '\0'; + } + } + } + else + { + canonical_display_name = display_env; + } + } + return canonical_display_name; +} + static Accessibility_Registry spi_atk_bridge_get_registry (void) { @@ -270,6 +314,9 @@ spi_atk_bridge_get_registry (void) CORBA_exception_init (&ev); if (registry_died) DBG (1, g_warning ("registry died! restarting...")); + + bonobo_activation_set_activation_env_value ("AT_SPI_DISPLAY", spi_display_name ()); + registry = bonobo_activation_activate_from_id ( "OAFIID:Accessibility_Registry:1.0", 0, NULL, &ev);