From: Pete Zaitcev <zaitcev@redhat.com>
To: Dmitry Torokhov <dtor@insightbb.com>
Cc: linux-kernel@vger.kernel.org,
linux-input@atrey.karlin.mff.cuni.cz, zaitcev@redhat.com
Subject: Re: Fix sudden warps in mousedev
Date: Sun, 25 Mar 2007 11:19:30 -0700 [thread overview]
Message-ID: <20070325111930.f6428509.zaitcev@redhat.com> (raw)
In-Reply-To: <200703250134.03416.dtor@insightbb.com>
On Sun, 25 Mar 2007 01:34:02 -0400, Dmitry Torokhov <dtor@insightbb.com> wrote:
> > + * Without this, a touchpad may report an unchanged position,
> > + * then a sync. The input_event() eats the position report, but
> > + * lets the sync through. We increment pkt_count and leave
> > + * a stale position in the ring. If a future reference to fx(2)
> > + * hits the stale position, a large dx is reported, and the
> > + * pointer warps across the screen.
> > + */
> > + dev = mousedev->handle.dev;
> > + fx(0) = dev->abs[ABS_X];
> > + fy(0) = dev->abs[ABS_Y];
>
> I do not like input hanlders poking into input devices... Can't we just
> reset pkt_count at the beginning of the touch to get rid of stale data?
The pkt_count is zero at the moment of assignment above.
Please look at the included trace again:
> > Event: time 1174703243.305535, type 1 (Key), code 330 (Touch), value 1
> > <---- touch!=0 now, we're on
> > Event: time 1174703243.305538, type 3 (Absolute), code 24 (Pressure), value 31
> > Event: time 1174703243.305541, -------------- Report Sync ------------
> > <---- We increment the pkt_count, leaving value of 3687 in old_y
> > Event: time 1174703243.342452, type 3 (Absolute), code 0 (X), value 4747
> > Event: time 1174703243.342455, type 3 (Absolute), code 1 (Y), value 1988
> > <----- Later to be fy(1), not used for warping purposes :-)
> > Event: time 1174703243.342459, -------------- Report Sync ------------
> > Event: time 1174703243.356225, type 3 (Absolute), code 0 (X), value 4749
> > Event: time 1174703243.356237, type 3 (Absolute), code 1 (Y), value 1987
> > <----- warp here, by the difference of 3687 and 1987, plus
> > some small frac_dy value. Easily jumps half the screen.
> > Event: time 1174703243.356246, -------------- Report Sync ------------
The assignment happens at .305535. The pkt_count is zero, and fy(0) contains
stale data (ovewritten by the assignment). The touchpad reports a position
next with input_report_abs(). If the position were different, we'd receive
an event between .305535 and .305538 and it would be stored in fy(0).
However, if position is the same, as in this case, input_report eats it.
At .305541 we increment pkt_count. The fy(0) location becomes fy(1) at
this point. Without the assignment it contains the stale position.
I can explore alternatives, but for now using dev->abs[] seems to be most
expedient.
-- Pete
next prev parent reply other threads:[~2007-03-25 18:19 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-24 7:16 Fix sudden warps in mousedev Pete Zaitcev
2007-03-25 5:34 ` Dmitry Torokhov
2007-03-25 18:19 ` Pete Zaitcev [this message]
2007-03-26 3:19 ` Dmitry Torokhov
2007-03-26 19:17 ` Pete Zaitcev
2007-03-26 19:30 ` Dmitry Torokhov
2007-03-26 21:42 ` Pete Zaitcev
2007-03-27 1:14 ` Dmitry Torokhov
2007-03-27 15:14 ` Chuck Ebbert
2007-03-27 15:46 ` Dmitry Torokhov
2007-03-27 16:04 ` Chuck Ebbert
2007-03-27 16:19 ` Dmitry Torokhov
2007-03-28 20:51 ` Matt Keenan
2007-04-11 21:51 ` Peter Osterlund
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070325111930.f6428509.zaitcev@redhat.com \
--to=zaitcev@redhat.com \
--cc=dtor@insightbb.com \
--cc=linux-input@atrey.karlin.mff.cuni.cz \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).