From d4a806b062458ad27583667a80a81c4b81ebbc12 Mon Sep 17 00:00:00 2001
From: Olivier Fourdan <fourdan.olivier@wanadoo.fr>
Date: Tue, 6 Nov 2007 22:52:31 +0000
Subject: [PATCH] Get highest user time at initial client capture

(Old svn revision: 26262)
---
 src/client.c  |  2 +-
 src/display.c | 12 ++++++++++++
 src/display.h |  2 ++
 3 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/client.c b/src/client.c
index 97aa33ba0..16709d5db 100644
--- a/src/client.c
+++ b/src/client.c
@@ -1586,7 +1586,7 @@ clientGetUserTime (Client * c)
     if (getNetWMUserTime (display_info, c->window, &c->user_time) && (c->user_time != 0))
     {
         FLAG_SET (c->flags, CLIENT_FLAG_HAS_USER_TIME);
-        myDisplaySetLastUserTime (display_info, c->user_time);
+        myDisplayUpdateLastUserTime (display_info, c->user_time);
     }
 }
 
diff --git a/src/display.c b/src/display.c
index 7bec3515f..68670b3e7 100644
--- a/src/display.c
+++ b/src/display.c
@@ -753,6 +753,18 @@ myDisplaySetLastUserTime (DisplayInfo *display, Time timestamp)
     display->last_user_time = timestamp;
 }
 
+void
+myDisplayUpdateLastUserTime (DisplayInfo *display, Time timestamp)
+{
+    g_return_if_fail (display != NULL);
+    g_return_if_fail (timestamp != (Time) 0);
+
+    if (TIMESTAMP_IS_BEFORE(display->last_user_time, timestamp))
+    {
+	display->last_user_time = timestamp;
+    }
+}
+
 gboolean
 myDisplayTestXrender (DisplayInfo *display, gdouble min_time)
 {
diff --git a/src/display.h b/src/display.h
index 29815e9c8..8ff460b7c 100644
--- a/src/display.h
+++ b/src/display.h
@@ -384,6 +384,8 @@ Time                     myDisplayGetTime                       (DisplayInfo *,
 Time                     myDisplayGetLastUserTime               (DisplayInfo *);
 void                     myDisplaySetLastUserTime               (DisplayInfo *,
                                                                  Time);
+void                     myDisplayUpdateLastUserTime            (DisplayInfo *, 
+                                                                 Time);
 gboolean                 myDisplayTestXrender                   (DisplayInfo *,
                                                                  gdouble);
 
-- 
GitLab