intended direct touch behavior

Thomas Jaeger thjaeger at gmail.com
Tue Oct 9 23:57:27 PDT 2012


On 10/09/2012 11:49 PM, Peter Hutterer wrote:
> On Tue, Oct 09, 2012 at 08:31:12AM -0700, Chase Douglas wrote:
>> I think you're hitting an issue that just never was resolved properly.
>> I think that, ideally, when you perform a direct touch interaction and
>> the cursor moves to that location, any future relative device motion
>> should be performed relative to the new location.
>
> correct, that's the expected behaviour (and the behaviour for non-touch
> devices). Fix would be in dix/getevents.c:updateSlaveDeviceCoords() and
> figuring out why master->last.valuators apparently have the wrong values.

Thanks, that's good to know.  The issue is the storeLastValuators call
in GetTouchEvents.  The code was adapted from fill_pointer_events, which
it looks like was written under the assumption that the device is not a
master device.  Now GetTouchEvents does get called with dev being a
master device, which causes the problem.  I don't know if this should
happen or not, but in any case, skipping the storeLastValuators call for
master devices fixes this issue (see attached patch).

The next issue I encountered is harder to debug:  I somehow always end
up with a permanently active touch point that keeps getting replayed in
TouchEventHistoryReplay.  I'll look into that when I get a chance.

Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: touch.diff
Type: text/x-patch
Size: 791 bytes
Desc: not available
URL: <http://lists.x.org/archives/xorg-devel/attachments/20121010/0783653c/attachment.bin>


More information about the xorg-devel mailing list