From: billh Date: Thu, 20 Jun 2002 21:37:58 +0000 (+0000) Subject: Fixed ugly little regression introduced by 'failsafe' fix X-Git-Tag: AT_SPI2_ATK_2_12_0~1343 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git;a=commitdiff_plain;h=80e3c865d3b51e8e53dfc36ba1457ce6006992d1 Fixed ugly little regression introduced by 'failsafe' fix (bug 86048). git-svn-id: http://svn.gnome.org/svn/at-spi/trunk@324 e2bd861d-eb25-0410-b326-f6ed22b6b98c --- diff --git a/ChangeLog b/ChangeLog index 94f7aaf..a547465 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,15 @@ 2002-06-20 Bill Haneman + * registryd/registry.c: [fix for bug 86048] + (notify_listeners_cb): + Clear CORBA system exceptions which occur when notifying + listeners, before returning to the source of the original event, + since the event source doesn't care if the relayed notify failed. + In other words, don't complain to the atk-bridge if the registry + could not notify all its listeners, that's no fault of the + application and thus should not appear to be an error from the + application's perspective. + * cspi/spi_main.c: [fix for bug 85980] (cspi_object_ref): Replaced use of bonobo_object_dup_ref with call to the wrapper diff --git a/atk-bridge/bridge.c b/atk-bridge/bridge.c index 2180939..d094d59 100644 --- a/atk-bridge/bridge.c +++ b/atk-bridge/bridge.c @@ -409,6 +409,13 @@ spi_atk_emit_eventv (GObject *gobject, #endif Accessibility_Registry_notifyEvent (spi_atk_bridge_get_registry (), &e, &ev); +#ifdef SPI_BRIDGE_DEBUG + if (ev._major != CORBA_NO_EXCEPTION) + g_warning ("error emitting event %s, (%d) %s", + e.type, + ev._major, + CORBA_exception_id(&ev)); +#endif if (BONOBO_EX (&ev)) registry_died = TRUE; Accessibility_Accessible_unref (e.source, &ev); diff --git a/registryd/registry.c b/registryd/registry.c index 273ab43..33afabc 100644 --- a/registryd/registry.c +++ b/registryd/registry.c @@ -586,6 +586,10 @@ notify_listeners_cb (GList * const *list, gpointer user_data) g_warning ("Accessibility app error: exception during " "event notification: %s\n", CORBA_exception_id (ctx->ev)); + if (ctx->ev->_major == CORBA_SYSTEM_EXCEPTION) + CORBA_exception_init (ctx->ev); + /* clear system exception on notify, it means listener is dead but + * that's no concern of the event source :-) */ } } else /* dup re-entered */