X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=cspi%2Fbonobo%2Fcspi-bonobo.c;h=8f6bb1e6e8655bfde7dcf91a0452baa159129e02;hb=23f35c8784fc9510baf965622cd2f1ee50d65cc8;hp=2422dda29e078683c80ff59523009ff4990fcbb7;hpb=6befa495c5fe3d09f475cc82367ff2d1d252da68;p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git diff --git a/cspi/bonobo/cspi-bonobo.c b/cspi/bonobo/cspi-bonobo.c index 2422dda..8f6bb1e 100644 --- a/cspi/bonobo/cspi-bonobo.c +++ b/cspi/bonobo/cspi-bonobo.c @@ -35,13 +35,13 @@ cspi_dup_ref (CORBA_Object object) void cspi_release_unref (CORBA_Object object) { - bonobo_object_release_unref (object, NULL); + bonobo_object_release_unref (object, NULL); } SPIBoolean cspi_check_ev (const char *error_string) { - CORBA_Environment *ev = cspi_ev (); + CORBA_Environment *ev = cspi_peek_ev (); if (ev->_major != CORBA_NO_EXCEPTION) { @@ -49,7 +49,7 @@ cspi_check_ev (const char *error_string) err = bonobo_exception_get_text (ev); - if (!_cspi_exception_throw (ev, error_string)) { + if (!cspi_exception_throw (ev, (char *) error_string)) { fprintf (stderr, "Warning: AT-SPI error: %s: %s\n", error_string, err); } @@ -78,6 +78,42 @@ cspi_exception_get_text (void) return ret; } +/* + * Returns a 'canonicalized' value for DISPLAY, + * with the screen number stripped off if present. + */ +static const gchar* +cspi_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; +} + CORBA_Object cspi_init (void) { @@ -94,6 +130,9 @@ cspi_init (void) CORBA_exception_init (&ev); + bonobo_activation_set_activation_env_value ("AT_SPI_DISPLAY", + cspi_display_name ()); + registry = bonobo_activation_activate_from_id ( obj_id, 0, NULL, &ev);