Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 Feb 2008 15:33:12 -0500
From:      Jung-uk Kim <jkim@FreeBSD.org>
To:        freebsd-stable@FreeBSD.org
Cc:        Teemu Korhonen <teemu.korhonen@mbnet.fi>, Kris Kennaway <kris@FreeBSD.org>, Xin LI <delphij@FreeBSD.org>
Subject:   Re: jerky mouse still in 7.0-RELEASE
Message-ID:  <200802281533.14212.jkim@FreeBSD.org>
In-Reply-To: <47C71003.1050206@FreeBSD.org>
References:  <47C6FDD0.2040902@mbnet.fi> <200802281443.36892.jkim@FreeBSD.org> <47C71003.1050206@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday 28 February 2008 02:48 pm, Kris Kennaway wrote:
> Jung-uk Kim wrote:
> > On Thursday 28 February 2008 01:30 pm, Teemu Korhonen wrote:
> >> Did anyone find a solution to the "jerky mouse" -problem? It
> >> still exists in 7.0-RELEASE.
> >>
> >> I have pretty much exact same symptoms as in this post:
> >
> > http://lists.freebsd.org/pipermail/freebsd-stable/2008-January/03
> >9599.html
> >
> > No.  However, the problem was well analyzed by delphij:
> >
> > http://docs.freebsd.org/cgi/mid.cgi?47C320DB.70004
> >
> > Jung-uk Kim
>
> Hmm, that is strange.  The real question is why X is doing so many
> gettimeofday syscalls at all.

http://www.x.org/wiki/Development/Documentation/InputEventProcessing

'For a motion event, the driver calls now xf86PostMotionEvent() and we 
are back on the server's side. For button events it is 
xf86PostButtonEvent(). Those in turn call GetPointerEvents() 
(GetKeyboardEvents() for keyboard events) which creates the necessary 
number of events and returns them to the caller. GetTimeInMillis() is 
called inside GetPointerEvents() and timestamps the OS time on the 
event. Inside the same function, miPointerSetPosition() is called to 
re-paint the mouse on the screen. It calls miPointerMoved(). The 
miPointerMoved() decides to start the hw or the sw 
management/rendering of the cursor (see section Cursor rendering). 
After this choose the events are put - one by one - onto the event 
queue using mieqEnqueue().'

I believe GetTimeInMillis() is unavoidable.  It uses gettimeofday(2) 
or clock_gettime(2) depending on OS since xorg-server-1.2.99.0:

http://lists.freedesktop.org/archives/xorg/2006-November/019334.html

Somehow it was not used in FreeBSD, though:

http://docs.freebsd.org/cgi/mid.cgi?20080227103210.694787ec

Jung-uk Kim



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200802281533.14212.jkim>