[PATCH xserver] dix: Don't update current time in the middle of input event processing
michel at daenzer.net
Mon May 30 08:34:23 UTC 2016
On 28.05.2016 09:49, Keith Packard wrote:
> In patch 137ac094e7ab8c871f3b36e40ad826ac797f0e26, Adam moved an
> expensive call to UpdateCurrentTime out of the main dispatch
> loop. That's a good change as the original fix from Chase was a bit
> expensive. However, it breaks grab processing and so a couple of the
> calls to UpdateCurrenTime need to be removed.
> Input event processing can generate a stream of events; a button press
> that activates a grab will send a press followed by a sequence of
> enter/leave events. All of these should have the same time stamp on
> the wire as they occur at the 'same' time.
> More importantly, the grab time recorded in the device is pulled from
> currentTime after all of the events are delivered, so if currentTime
> doesn't match the time in the device event, then future grab
> modifications will fail as the time marked in the device will be
> 'later' than the grab time known to the client (which is defined as
> the timestamp from the activating input event).
> A bit of history here -- it used to be that currentTime was driven
> *entirely* by input events; those timestamps didn't even have to be
> related to the system time in any way. Then we started doing ICCCM
> stuff and people got confused when PropertyNotify events would have
> the same timestamp even when delivered minutes apart because no input
> events were delivered.
> We added code in the server to go update the time, but only if no
> input events were pending (so that the clock "wouldn't" go
> backwards). The only places where this is necessary is in request
> processing which may generate an event with a timestamp, and there
> only at the very top of the request processing code so that the whole
> request would be processed at the 'same time', just like events.
> cc: Chase Douglas <chase.douglas at canonical.com>
> cc: Peter Hutterer <peter.hutterer at who-t.net>
> cc: Adam Jackson <ajax at redhat.com>
> Signed-off-by: Keith Packard <keithp at keithp.com>
Tested-by: Michel Dänzer <michel.daenzer at amd.com>
Thank you for restoring sanity to my GNOME session!
Earthling Michel Dänzer | http://www.amd.com
Libre software enthusiast | Mesa and X developer
More information about the xorg-devel