keep event_lasttime at the last time an event has come in so far, don't regress when events come out of order. props to shrimpx for this patch.
This commit is contained in:
parent
a4f023cf3a
commit
cb49f853c9
1 changed files with 13 additions and 7 deletions
|
@ -223,32 +223,38 @@ static Window event_get_window(XEvent *e)
|
||||||
|
|
||||||
static void event_set_lasttime(XEvent *e)
|
static void event_set_lasttime(XEvent *e)
|
||||||
{
|
{
|
||||||
|
Time t = 0;
|
||||||
|
|
||||||
/* grab the lasttime and hack up the state */
|
/* grab the lasttime and hack up the state */
|
||||||
switch (e->type) {
|
switch (e->type) {
|
||||||
case ButtonPress:
|
case ButtonPress:
|
||||||
case ButtonRelease:
|
case ButtonRelease:
|
||||||
event_lasttime = e->xbutton.time;
|
t = e->xbutton.time;
|
||||||
break;
|
break;
|
||||||
case KeyPress:
|
case KeyPress:
|
||||||
event_lasttime = e->xkey.time;
|
t = e->xkey.time;
|
||||||
break;
|
break;
|
||||||
case KeyRelease:
|
case KeyRelease:
|
||||||
event_lasttime = e->xkey.time;
|
t = e->xkey.time;
|
||||||
break;
|
break;
|
||||||
case MotionNotify:
|
case MotionNotify:
|
||||||
event_lasttime = e->xmotion.time;
|
t = e->xmotion.time;
|
||||||
break;
|
break;
|
||||||
case PropertyNotify:
|
case PropertyNotify:
|
||||||
event_lasttime = e->xproperty.time;
|
t = e->xproperty.time;
|
||||||
break;
|
break;
|
||||||
case EnterNotify:
|
case EnterNotify:
|
||||||
case LeaveNotify:
|
case LeaveNotify:
|
||||||
event_lasttime = e->xcrossing.time;
|
t = e->xcrossing.time;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
event_lasttime = CurrentTime;
|
/* if more event types are anticipated, get their timestamp
|
||||||
|
explicitly */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (t > event_lasttime)
|
||||||
|
event_lasttime = t;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define STRIP_MODS(s) \
|
#define STRIP_MODS(s) \
|
||||||
|
|
Loading…
Reference in a new issue