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_notif
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

Reply via email to