From a544f68ac967e6ab15d97b7dd53d03e4c675c374 Mon Sep 17 00:00:00 2001 From: Havoc Pennington Date: Thu, 3 Oct 2002 21:49:13 +0000 Subject: [PATCH] handle the case where the clock is set backward 2002-10-03 Havoc Pennington * src/window.c (check_moveresize_frequency): handle the case where the clock is set backward --- ChangeLog | 5 +++++ src/window.c | 23 +++++++++++++---------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 465004a1b..b46d478c9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2002-10-03 Havoc Pennington + + * src/window.c (check_moveresize_frequency): handle the case where + the clock is set backward + 2002-10-01 Havoc Pennington * src/place.c (find_next_cascade): try extra cascades alongside diff --git a/src/window.c b/src/window.c index 1df06e78e..b538ec735 100644 --- a/src/window.c +++ b/src/window.c @@ -6061,6 +6061,14 @@ window_query_root_pointer (MetaWindow *window, *y = root_y_return; } +static void +clear_moveresize_time (MetaWindow *window) +{ + /* Forces the next update to actually do something */ + window->display->grab_last_moveresize_time.tv_sec = 0; + window->display->grab_last_moveresize_time.tv_usec = 0; +} + static gboolean check_moveresize_frequency (MetaWindow *window) { @@ -6074,24 +6082,19 @@ check_moveresize_frequency (MetaWindow *window) ((((double)current_time.tv_sec - window->display->grab_last_moveresize_time.tv_sec) * G_USEC_PER_SEC + (current_time.tv_usec - window->display->grab_last_moveresize_time.tv_usec))) / 1000.0; +#define EPSILON (1e-6) #define MAX_RESIZES_PER_SECOND 30.0 - if (elapsed < (1000.0 / MAX_RESIZES_PER_SECOND)) + if (elapsed >= 0.0 && elapsed < (1000.0 / MAX_RESIZES_PER_SECOND)) return FALSE; - + else if (elapsed < (0.0 - EPSILON)) /* handle clock getting set backward */ + clear_moveresize_time (window); + /* store latest time */ window->display->grab_last_moveresize_time = current_time; return TRUE; } -static void -clear_moveresize_time (MetaWindow *window) -{ - /* Forces the next update to actually do something */ - window->display->grab_last_moveresize_time.tv_sec = 0; - window->display->grab_last_moveresize_time.tv_usec = 0; -} - static void update_move (MetaWindow *window, unsigned int mask,