Hi David, Thanks for the suggestion. I put in a handler for object:state-changed:defunct. For the SPI_ROLE_FRAME object that corresponds to the window, the :defunct event comes in right after the window:destroy event.
It would be good to know if the designers of AT-SPI had designated a particular event as the best indicator that an application has died. When an application is killed I get a :defunct event for every Accessible *object of that application (except one). For a Firefox window, that is a few hundred events. I did not receive a :defunct event for the application object itself. Too bad, I would definitely interpret that event as conlusive that the application was dead. -Sam -----Original Message----- From: david bolter [mailto:[email protected]] On Behalf Of David Bolter Sent: Wednesday, March 18, 2009 9:57 AM To: Quiring, Sam Cc: [email protected] Subject: Re: [g-a-devel] WARNING **: FIXME: wait for completion unimplemented Hi Sam, I think you want object:state-changed:defunct. We have used that in GOK with some success. cheers, David Quiring, Sam wrote: > Greetings, > > We have an Accessibility *handle to an Application object (role = > SPI_ROLE_APPLICATION). We called Accessible_ref(handle). At some > time while we have this handle, the user kills the application with > the mouse. > > We have introduced a routine, isAccessibleDead(Accessible *handle), > where we try to determine if the object still exists by examining its > state. During this testing, we get a segfault, most likely from > Accessible_getStateSet(handle). We have exception handlers around > this code and if we get a segfault we conclude the object is indeed dead. > Our accessibility app continues to execute. > > At a later time, if the user clicks on any buried window on the > desktop to bring it to the top, our accessibility app gets the > segfault shown in the email below. > > So here's my question: What is the correct AT-SPI algorithm for > determining that an Application object is gone? > > When the user kills the application, our app gets a window:deactivate > event and a window:destroy event for the only direct child of > Application object, an SPI_ROLE_FRAME object. My best guess for the > algorithm is "if I receive a window:destroy for the frame of an > application, mark the application as dead. Never use the Accessible > *handle after that." Is that the it? > > It is a bug that we are getting a segfault when we call > Accessible_getStateSet() on a ref'd Accessible *value, right? > > -Sam > > > ________________________________ > > From: [email protected] > [mailto:[email protected]] On Behalf Of > Quiring, Sam > Sent: Tuesday, March 17, 2009 4:15 PM > To: [email protected] > Subject: [g-a-devel] WARNING **: FIXME: wait for completion > unimplemented > > > Greetings, > > Does anyone know what this message means: > > ** (process:9316): WARNING **: FIXME: wait for completion > unimplemented > > It comes out on the console of my Accessibility app near the same time > as the stack dump shown below. This stack dump does not contain any > code from my accessibility app -- I cause it to happen by switching > among windows on my desktop. Any clues about what is going on here > would be greatly appreciated. > > -Sam > > Stack Dump (the top frame was called by the 2nd frame, etc.) TCF > 49:24.522: /usr/lib/libcspi.so.0 [0xb790e969] TCF 49:24.522: > /usr/lib/libcspi.so.0 [0xb790abe2] TCF 49:24.523: > /usr/lib/libcspi.so.0 [0xb790f1b2] TCF 49:24.523: > /usr/lib/libgobject-2.0.so.0(g_cclosure_marshal_VOID__POINTER+0x5a) > [0xb7a300ba] > TCF 49:24.523: /usr/lib/libgobject-2.0.so.0 [0xb7a22079] TCF > 49:24.523: /usr/lib/libgobject-2.0.so.0(g_closure_invoke+0x129) > [0xb7a23759] > TCF 49:24.523: /usr/lib/libgobject-2.0.so.0 [0xb7a3811a] TCF > 49:24.523: /usr/lib/libgobject-2.0.so.0(g_signal_emit_valist+0x8ef) > [0xb7a39c1f] > TCF 49:24.523: /usr/lib/libgobject-2.0.so.0(g_signal_emit+0x29) > [0xb7a39f69] > TCF 49:24.523: /usr/lib/libspi.so.0 [0xb794fb2f] TCF 49:24.523: > /usr/lib/libspi.so.0(_ORBIT_skel_small_Accessibility_EventListener_not > if > yEvent+0x1f) [0xb794202f] > TCF 49:24.523: /usr/lib/libORBit-2.so.0 [0xb738a5c7] TCF 49:24.523: > /usr/lib/libORBit-2.so.0(ORBit_OAObject_invoke+0x35) > [0xb73907b5] > TCF 49:24.523: > /usr/lib/libORBit-2.so.0(ORBit_small_invoke_adaptor+0x4d0) > [0xb737d910] TCF 49:24.523: /usr/lib/libORBit-2.so.0 [0xb738e424] TCF > 49:24.523: /usr/lib/libORBit-2.so.0 [0xb738eaa2] TCF 49:24.523: > /usr/lib/libORBit-2.so.0(giop_thread_queue_process+0xad) > [0xb73763dd] > TCF 49:24.523: /usr/lib/libORBit-2.so.0 [0xb7376b26] > > > > ---------------------------------------------------------------------- > -- > > _______________________________________________ > Gnome-accessibility-devel mailing list > [email protected] > http://mail.gnome.org/mailman/listinfo/gnome-accessibility-devel > _______________________________________________ Gnome-accessibility-devel mailing list [email protected] http://mail.gnome.org/mailman/listinfo/gnome-accessibility-devel
