On Mon, Jan 9, 2012 at 3:02 PM, Ping Cheng <pingli...@gmail.com> wrote:
> On Mon, Jan 9, 2012 at 7:22 AM, Chris Bagwell <ch...@cnpbagwell.com> wrote:
>>
>>
>> I'd like to understand this better if ya don't mind.
>>
>> First up, is this usecase for absolute or relative mode?
>
>
> Very good question ;-). To be honest, I didn't think about that when I
> worked on it. It was for touchscreen devices. So, I assumed absolute mode.
> But, from the code, it is clear that I have not taken care of that...
>
>>
>> I'll phrase it like that instead of touchscreen/touchpad since some people
>> put
>> touchpad in absolute mode.  Also, are gestures enabled or disabled?
>
>
> I would suggest that wcmMT only applies to absolute mode unless you see if
> differently. Under this assumption, gestures will have no meaning.
>

I still don't quite see the issue so hard to say.  I assume if its
useful to absolute then it could be useful to relative.

>>
>> For relative mode, Alexey just submitted a nice bug fix that may fix
>> what your really worried about.  Previously, during
>> gestures-with-no-movement we were not storing updated X/Y movement so
>> when you released gesture you'd get a big jump.  I believe this was
>> seen mostly during transition from 2 fingers to 1 finger (the case
>> your talking about).
>
>
> The issue is not with gestures.

There was one part that is not exactly gesture related.  Its correctly
setting the oldX/Y values at the right times.  If you don't get this
right for MT then you'll see jumps.

> It is the "raw" ST value we get from the
> kernel that is jumpy.

When you say ST here, what do you mean?  Do you mean ABS_X/Y by ST?
xf86-input-wacom ignores those when device supports MT.  Do you mean
"raw" values of MT_SLOT==0?

I think you've been working on a touchscreen where Slot 0 is not as
reliable first touch any more so probably thats what you mean.  I do
not have have much experience with these type and how they would
behave with xf86-input-wacom.

For this, we probably need small updates to our channel selection
logic to pick Slot with oldest ID and put it in channel 0 instead of
always Slot 0.

>
>>
>> Maybe you should try today's git and see if the issue is reproducible any
>> more.
>
>
> Will try, but not for this issue I think.
>
>>
>> Now on the ST vs. MT part.  xf86-input-wacom doesn't know ST vs. MT.
>> Its always MT to it.  Sometimes its a MT with a count of 1 but still
>> MT.  So if we are seeing unwanted jumps during touch transitions, I'd
>> like to understand that better because I think there are real
>> xf86-input-wacom bugs to fix beyond giving an optional disable.
>
>
> As  mentioned above, the jump was "raw", we can not use the ST events
> reported from the kernel as is when there are more than one finger on the
> tablet.
>
>>
>> I'm actually a little surprised that ignoring MT events and looking at
>> only ST events helps instead of hurts.  At least in
>> xf86-input-synatpics, there is special logic to detect transition of
>> fingers and to account for an expected cursor jump in ST values.
>
>
> How did that work?

They keep it quite simple.  When current_num_touch !=
previous_num_touch then they empty their filter history and require
filling the history back up (something like 5 packets) before movement
is allowed.  All brands of touchpads seem to have some amount of
unstable X/Y right at finger transitions.

We used to have something in xf86-input-wacom that waited 4 samples
before allowing movement when coming into proximity but I can't find
that logic any more.

We can add history reset in easy enough during touch count transitions
and it wouldn't be to hard to go back to requiring wcmRawSample's
worth of packets before movement.  We also need to be updating oldX/Y
when resetting filter window.

Without this and in absolute mode, I could envision in Gimp that
lifting 1 finger away during 2 finger case could cause a line to be
drawn towards the remaining finger as the filter window clears out the
old touches.  This could be the jump?

>
>>
>> Probably, for wacom it depends on finger release order.  If you
>> release 1st finger before 2nd finger then you should see a nice cursor
>> jump since finger tracking is forced to move to only remaining finger.
>
>
> You are right. I think that is the root cause of the jump, which I do not
> have a way to correct, and ST app users do not like.

I'm thinking something like above could help out a lot.  I have some
ideas how to do it but will be the weekend before I can play with it
to much.

Chris

>
> Ping

------------------------------------------------------------------------------
Write once. Port to many.
Get the SDK and tools to simplify cross-platform app development. Create 
new or port existing apps to sell to consumers worldwide. Explore the 
Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join
http://p.sf.net/sfu/intel-appdev
_______________________________________________
Linuxwacom-devel mailing list
Linuxwacom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel

Reply via email to