2007-09-08 Li Yuan <li.yuan@sun.com>
[platform/core/uifw/at-spi2-atk.git] / libspi / listener.c
index b42b865..c969483 100644 (file)
@@ -2,7 +2,8 @@
  * AT-SPI - Assistive Technology Service Provider Interface
  * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
  *
- * Copyright 2001 Sun Microsystems Inc.
+ * Copyright 2001, 2002 Sun Microsystems Inc.,
+ * Copyright 2001, 2002 Ximian, Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -63,10 +64,8 @@ impl_notify_event (PortableServer_Servant     servant,
   fprintf (stderr, "source name: '%s'\n",
            Accessibility_Accessible__get_name(e->source, ev));
   if (ev->_major != CORBA_NO_EXCEPTION) {
-    fprintf(stderr,
-            ("Accessibility app error: exception during event notification: %s\n"),
-            CORBA_exception_id(ev));
-    exit(-1);
+           DBG (2, g_warning ("Accessibility app error: exception during event notification: %s\n"),
+               CORBA_exception_id(ev)));
   }
   /*
   fprintf (stderr, "source is component ? : %s\n",
@@ -76,7 +75,10 @@ impl_notify_event (PortableServer_Servant     servant,
            ? "yes" : "no");
   */
 #endif
-  Accessibility_Accessible_unref (e->source, ev);
+  if (e->source != CORBA_OBJECT_NIL)
+    {
+      Accessibility_Accessible_unref (e->source, ev);
+    }
 }
 
 static void
@@ -96,46 +98,14 @@ spi_listener_init (SpiListener *listener)
 {
 }
 
-GType
-spi_listener_get_type (void)
-{
-        static GType type = 0;
-
-        if (!type) {
-                static const GTypeInfo tinfo = {
-                        sizeof (SpiListenerClass),
-                        (GBaseInitFunc) NULL,
-                        (GBaseFinalizeFunc) NULL,
-                        (GClassInitFunc) spi_listener_class_init,
-                        (GClassFinalizeFunc) NULL,
-                        NULL, /* class data */
-                        sizeof (SpiListener),
-                        0, /* n preallocs */
-                        (GInstanceInitFunc) spi_listener_init,
-                        NULL /* value table */
-                };
-                /*
-                 *   Here we use bonobo_type_unique instead of
-                 * gtk_type_unique, this auto-generates a load of
-                 * CORBA structures for us. All derived types must
-                 * use bonobo_type_unique.
-                 */
-                type = bonobo_type_unique (
-                        PARENT_TYPE,
-                        POA_Accessibility_EventListener__init,
-                        NULL,
-                        G_STRUCT_OFFSET (SpiListenerClass, epv),
-                        &tinfo,
-                        "SpiListener");
-        }
-
-        return type;
-}
+BONOBO_TYPE_FUNC_FULL (SpiListener,
+                      Accessibility_EventListener,
+                      PARENT_TYPE,
+                      spi_listener)
 
 SpiListener *
 spi_listener_new (void)
 {
-    SpiListener *retval =
-               SPI_LISTENER (g_object_new (spi_listener_get_type (), NULL));
+    SpiListener *retval = g_object_new (SPI_LISTENER_TYPE, NULL);
     return retval;
 }