[RFC XI 2.1] current issues

Daniel Stone daniel at fooishbar.org
Tue Dec 7 11:07:26 PST 2010


Hi,

On Tue, Dec 07, 2010 at 05:22:09PM +0100, Denis Dzyubenko wrote:
> I've started using experimental XI 2.1 from Chase's personal ubuntu
> repository and noticed a few issues I would like to ask about:
> 
> - I get XI_TouchMotion without ever getting XI_TouchBegin
> 
> That happens with Apple Magic Trackpad when you move the mouse pointer
> out of the window, then touch the trackpad with one finger and move
> the pointer to the touch-enabled window.
> 
> - Even worse - receiving XI_TouchBegin without ever getting XI_TouchEnd
> 
> Just start touching over the window and then move the cursor outside
> of its boundaries. That screws up things for me as I have no way of
> knowing that touch sequence has ended.
> 
> Is it a bug it intentional behavior?

I've fixed those two in my branch.

> - Multiple XISelectEvents calls result in BadValue
> 
> if you call XISelectEvents twice with the same mask value on
> XIAllDevices, it gives BadValue back. Currently in Qt with client-side
> widgets I do not store the information whether the widget has already
> selected touch events through the native toplevel and just always call
> XISelectEvent on the toplevel whenever a touch-aware widget appears.

Ah right, I'll fix that.  Thanks!

> - What is the point of XI_TouchMask?
> 
> It looks useless to me as I cannot use it in XISetMask as I would have expected.

This one's a bit harder to fix, as XISetMask will have to become a
function instead of a macro, but still doable.

> - Crash when disconnecting Magic Trackpad
> 
> not that I care :) I don't have debugging symbols so can't give you
> the backtrace
> 
> Chase, Daniel: would be nice to put packages with debugging symbols to the ppa.

I have nothing to do with the PPA, sorry: I run Debian, and only test
against master.  As for the crash, I don't have a Magic Trackpad either,
but will try to get my hands on one.

> - Who is going to "adjust" valuators values for different devices?
> 
> For example the Touch Minor and Touch Major valuators give me totally
> different values for N-Trig touch screen and for the Apple Magic
> Trackpad.
> On the N-Trig I usually get values around 400 for my finger pressing
> gently while the range is from 0 to 9600; while with the magic
> trackpad it is around 100 in the range 0 to 255.

Hm, I'm not sure how much we can do here without a table of
device-specific scalings.  Maybe we just need to get better data from
the kernel.

> Another example is the MTAbsX valuator coming from the N-Trig - the
> range announced to be from 0 to 9600, while the value is actually in
> screen coordinates.

Hm, the x/y/root_x/root_y co-ordinates are in screen co-ords, but the
valuators themselves (appended to the event) should be in device
co-ordinate space.  I'll check this out.

> Other than that it seems to be working fine and I am looking forward
> to having grabs implemented :) Awesome job guys!

Thanks. :) Please do keep testing it out and let us know about any more
problems.  Right now, the main problem I'm tracking is related to grabs
and short-lived touches: the touch may be finished before the grabbing
client has a chance to process the data and release the grab to pass on
ownership.

My current hunch is to hold TouchEnd events until any grabbing client
has asserted ownership of the touch, or the last grabbing client has
released it to be played to selecting clients.  This adds a little more
scope for clients to get it wrong, but I don't see any other way to make
it work, and this is how grabs work today too.

Cheers,
Daniel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.x.org/archives/xorg-devel/attachments/20101207/db9701e1/attachment.pgp>


More information about the xorg-devel mailing list