Mercurial > emacs
comparison lisp/time.el @ 16673:932451713b13
(display-time-event-handler): If Don't run the timer
for successive times that are already in the past.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Fri, 13 Dec 1996 01:31:43 +0000 |
parents | 08d4cb2b9754 |
children | ab9da89a8283 |
comparison
equal
deleted
inserted
replaced
16672:1facf218a14f | 16673:932451713b13 |
---|---|
132 would give mode line times like `94/12/30 21:07:48 (UTC)'.") | 132 would give mode line times like `94/12/30 21:07:48 (UTC)'.") |
133 | 133 |
134 (defun display-time-event-handler () | 134 (defun display-time-event-handler () |
135 (display-time-update) | 135 (display-time-update) |
136 ;; Do redisplay right now, if no input pending. | 136 ;; Do redisplay right now, if no input pending. |
137 (sit-for 0)) | 137 (sit-for 0) |
138 (let ((current (current-time)) | |
139 (timer display-time-timer)) | |
140 ;; If the next activation time is already in the past, | |
141 ;; skip executions until we reach a time in the future. | |
142 ;; This avoids a long pause if Emacs has been suspended for hours. | |
143 (or (> (aref timer 1) (nth 0 current)) | |
144 (and (= (aref timer 1) (nth 0 current)) | |
145 (> (aref timer 2) (nth 1 current))) | |
146 (and (= (aref timer 1) (nth 0 current)) | |
147 (= (aref timer 2) (nth 1 current)) | |
148 (> (aref timer 3) (nth 2 current))) | |
149 (progn | |
150 (cancel-timer timer) | |
151 (timer-set-time timer (timer-next-integral-multiple-of-time | |
152 current display-time-interval)) | |
153 (timer-activate timer))))) | |
138 | 154 |
139 ;; Update the display-time info for the mode line | 155 ;; Update the display-time info for the mode line |
140 ;; but don't redisplay right now. This is used for | 156 ;; but don't redisplay right now. This is used for |
141 ;; things like Rmail `g' that want to force an update | 157 ;; things like Rmail `g' that want to force an update |
142 ;; which can wait for the next redisplay. | 158 ;; which can wait for the next redisplay. |