Bug 29427

Summary: pyatspi2 wrong dbus call for Registry.registerEventListener
Product: at-spi2 Reporter: Fernando Herrera <fherrera>
Component: coreAssignee: Rob Taylor <rob.taylor>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium CC: jdiggs
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Fernando Herrera 2010-08-06 12:20:33 UTC
If I exec pyatspi.Registry.registerKeystrokeListener, this is sent over the bus:

method call sender=:1.507 -> dest=:1.425 serial=16 path=/org/a11y/atspi/registry/deviceeventcontroller; interface=org.a11y.atspi.DeviceEventController; member=RegisterKeystrokeListener

which look ok.

However, if I exec pyatspi.Registry.registerEventListener, the bus gets:
method call sender=:1.514 -> dest=org.freedesktop.DBus serial=3 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
string "type='signal',interface='org.a11y.atspi.Event.Mouse',member='Abs'"

which I don't think is correct. The result is that orca for example is not getting mouse movement events.
Comment 1 Fernando Herrera 2010-08-06 13:18:58 UTC
some more info from IRC:

<mgorse> If I move the mouse, then press a key, then I get the event
<fer> yeah, but not just moving the mouse
<mgorse> I don't know much of anything about libX11. it's going to be fun trying to debug this.
<fer> mgorse: debuggin at-registryd gives me this:
<fer> spi_dec_mouse_check is only called after global_filter_fn
<fer> and that global filter is supposed to be only for key events
<fer> and the polling on the mouse is only done when spi_controller_register_device_listener is called
<fer> that is, RegisterDeviceEventListener dbus method
<fer> that I cannot find exposed on pyatspi2
<mgorse> Oh; that makes sense. The old at-spi-registryd knew when it had a ouse listener. at-spi2-registryd currently doesn't.
<fer> mgorse: so, what is the solution?
<mgorse> fer: I'd like for at-spi to optionally support direct dbus connections anyhow, so I think that the right way to fix it would be to add a RegisterEventListener method or signal, as you suggested
<mgorse> Events are currently sent out as signals, and dbus-aemon routes them based on the match rules, but that breaks down when the registry daemon wants to check whether anyone is listening
Comment 2 Mike Gorse 2010-08-09 09:17:31 UTC
Fixed in at-spi2-core and pyatspi2; you will need to update both.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.