From 3ad050f7d8050a46ad03f8233f1c61ad40be9551 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Wed, 28 Mar 2007 04:07:27 +0000 Subject: [PATCH] proper logic for event_time_after, and wraparounds and such --- openbox/event.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/openbox/event.c b/openbox/event.c index 96fe6275..3aa91c61 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -1383,5 +1383,15 @@ gboolean event_time_after(Time t1, Time t2) later in time than T. - http://tronche.com/gui/x/xlib/input/pointer-grabbing.html */ - return t1 >= t2 && t1 <= t2 + (1 << (sizeof(Time)*8-1)); + + /* TIME_HALF is half of the number space of a Time type variable */ +#define TIME_HALF (Time)(1 << (sizeof(Time)*8-1)) + + if (t2 >= TIME_HALF) + /* t2 is in the second half so t1 might wrap around and be smaller than + t2 */ + return t1 >= t2 || t1 < (t2 + TIME_HALF); + else + /* t2 is in the first half so t1 has to come after it */ + return t1 >= t2 && t1 < (t2 + TIME_HALF); } -- 2.39.2