]> git.eshelyaron.com Git - emacs.git/commitdiff
* emacs-lisp/timer.el (timer-relative-time): Use time-add.
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 1 Jul 2011 01:27:40 +0000 (18:27 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 1 Jul 2011 01:27:40 +0000 (18:27 -0700)
lisp/ChangeLog
lisp/emacs-lisp/timer.el

index 336531516ecb5540a95e01b8f5550567bf3e874a..3751cea4287920ff0d16e2634784d58c0aa3e195 100644 (file)
@@ -1,5 +1,7 @@
 2011-07-01  Paul Eggert  <eggert@cs.ucla.edu>
 
+       * emacs-lisp/timer.el (timer-relative-time): Use time-add.
+
        * calendar/timeclock.el (timeclock-seconds-to-time):
        Defalias to seconds-to-time, since they're the same thing.
 
index 0a03517504145eaee4c8e3915fd1380d8b51932a..27fd79a6ad2c6c658695b4be07f74d93bbbf6f42 100644 (file)
@@ -110,27 +110,12 @@ of SECS seconds since the epoch.  SECS may be a fraction."
 (defun timer-relative-time (time secs &optional usecs)
   "Advance TIME by SECS seconds and optionally USECS microseconds.
 SECS may be either an integer or a floating point number."
-  ;; FIXME: we should just use (time-add time (list 0 secs usecs))
-  (let ((high (car time))
-       (low (if (consp (cdr time)) (nth 1 time) (cdr time)))
-       (micro (if (numberp (car-safe (cdr-safe (cdr time))))
-                  (nth 2 time)
-                0)))
-    ;; Add
-    (if usecs (setq micro (+ micro usecs)))
-    (if (floatp secs)
-       (setq micro (+ micro (floor (* 1000000 (- secs (floor secs)))))))
-    (setq low (+ low (floor secs)))
-
-    ;; Normalize
-    ;; `/' rounds towards zero while `mod' returns a positive number,
-    ;; so we can't rely on (= a (+ (* 100 (/ a 100)) (mod a 100))).
-    (setq low (+ low (/ micro 1000000) (if (< micro 0) -1 0)))
-    (setq micro (mod micro 1000000))
-    (setq high (+ high (/ low 65536) (if (< low 0) -1 0)))
-    (setq low (logand low 65535))
-
-    (list high low (and (/= micro 0) micro))))
+  (let ((delta (if (floatp secs)
+                  (seconds-to-time secs)
+                (list (floor secs 65536) (mod secs 65536)))))
+    (if usecs
+       (setq delta (time-add delta (list 0 0 usecs))))
+    (time-add time delta)))
 
 (defun timer--time-less-p (t1 t2)
   "Say whether time value T1 is less than time value T2."