[g-a-devel] [Accessibility] Re: [Accessibility-atspi] D-Bus AT-SPI - The way forward

Willie Walker William.Walker at Sun.COM
Mon Dec 17 08:08:51 PST 2007

Hi All:

I still need to catch up on all this mail.  It's all good stuff, and I'm 
excited to see intelligent and cooperative conversation going on.  In 
the meantime...

>> 	Having said that, it'd be great to build an understanding of what
>> people do synchronously during event emission & can't do elsewhere: to
>> add to the events themselves.
> Yes! Please let us know, AT coders of the world!

I think there are a couple things to consider: 1) is there a need for an 
AT to process events synchronously, and 2) what other information can be 
sent in an event to avoid extra round tripping?

For the first question, Orca pretty much queue's all events and 
processes them on the gidle thread.  There are a few exceptions, but I'm 
not sure they require synchronous handling.

When it gets an event, a lot of what Orca does is:

o Determine which application the event came from.  This is important 
because Orca allows scripting per application.  Luckily, most toolkits 
support putting the application in the event, so we're pretty good with 

o Look at the role of the event source.  Passing this along in the event 
would prevent a round trip.

o If Orca decides it needs to present something about the event source, 
we also typically look at the ancestry of the event source.  The main 
reason for this is to compare the ancestry of the current object with 
focus to the ancestry of the object that previously had focus so that 
Orca can present contextual changes in location.  I'm not sure sending a 
complete ancestry with every event would be desirable, though.

o The profiling work at 
http://live.gnome.org/GAP/AtSpiDbusInvestigation/OrcaExtraProfiling can 
also be used to give more insight.

Having said that, the main area where handling events synchronously is 
desired is with testing.  With this, we have a better chance at 
repeatable test results since the application's state will essentially 
block until we process the event in a synchronous manner.  A notable 
example of where asynchronous event handling can yield different results 
is typing in text areas.


More information about the Accessibility mailing list