Re: [g-a-devel] pyatspi Registry does not refresh in gnome 3



Hi Nischal,

This sounds like a caching issue, as Trevor suggested; AT-SPI2 caches more aggressively than AT-SPI-CORBA in order to compensate for D-Bus calls being somewhat slow. So there are a few issues:
- If an application doesn't send events when an object's name, 
description, children, or state change, then the cache can get out of 
synch.  There is an API (setCacheMask in pyatspi2) that is supposed to 
allow an AT to determine what does and doesn't get cached, in order to 
make it possible to work around toolkits not always sending the expected 
events, but there were several issues with it.  I've just committed some 
changes/fixes to it that will go into the release tomorrow.  So you could 
run something like
app.setCacheMask (pyatspi.cache.ALL ^ pyatspi.cache.STATE)
to prevent state sets from being cached for a given application, where "app" is a root accessible for the given application. Or:
pyatspi.Registry.getDesktop(0).setCacheMask (pyatspi.cache.NONE)
to disable caching altogether.

- Additionally, libatspi currently does not report to the registry that it cares about StateChanged/PropertyChange/ChildrenChanged signals even though it listens for them to maintain its cache, so at-spi2-atk would not send them if the AT was not explicitly listening for them. I pushed a change to at-spi2-atk earlier today to make it always send these events, although I don't consider this ideal and would like to rework that logic for 2.2.
- If a pyatspi script does not call registry.start() but instead calls 
sleep() or similar while waiting for user interaction, then it will not 
see any events and the cache will get out of synch.  I'll try to fix this 
before tomorrow's release; currently you'll need to disable caching as 
described above when using such a script.
-Mike

On Sun, 22 May 2011, Nischal Rao wrote:

Hi,

I am trying to use the pyatspi2 in Gnome 3 for an application and found an issue in at-spi2 that doesn't seem to exist in at-spi.
I noticed that the state of a node in the at-spi tree is not refreshed when its state changes. Is there some kind of caching going on?

Is there a way to refresh the at-spi2 registry?

--
Best Regards,
Nischal E Rao

Download VEDICS @ http://vedics.sourceforge.net/




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]