emacs-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debbugs-tracker] bug#12430: closed (Glitches caused by addition of psec


From: GNU bug Tracking System
Subject: [debbugs-tracker] bug#12430: closed (Glitches caused by addition of psec to timers)
Date: Thu, 13 Sep 2012 16:28:02 +0000

Your message dated Thu, 13 Sep 2012 09:26:07 -0700
with message-id <address@hidden>
and subject line Re: bug#12430: Glitches caused by addition of psec to timers
has caused the debbugs.gnu.org bug report #12430,
regarding Glitches caused by addition of psec to timers
to be marked as done.

(If you believe you have received this mail in error, please contact
address@hidden)


-- 
12430: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=12430
GNU Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: Glitches caused by addition of psec to timers Date: Wed, 12 Sep 2012 23:04:32 -0700 User-agent: Mozilla/5.0 (X11; Linux i686; rv:15.0) Gecko/20120827 Thunderbird/15.0
Tags: patch

A private correspondent pointed out that the higher-resolution time
stamps patch (see Bug#9000) changed the format of timers but some
Lisp code that accesses timer-list wasn't updated.  The patch
below fixes the instances I found.  This
patch should be applied anyway, for clarity, but this raises
a compatibility point.  The old timer format (through 24.2) was:

  [high-seconds low-seconds usecs repeat-delay function args idle-delay]

The new (24.3) format, introduced to the trunk on 2012-06-22, adds a
PSECS component after USECS, like this:

  [high-seconds low-seconds usecs psecs repeat-delay function args idle-delay]

which means that old code like (aref timer 5) to get the function, no
longer has the intended meaning.  Code is supposed to use
(timer--function timer) instead of (aref timer 5), but not everyone
got the memo apparently.  Clearly this stuff should be documented in
NEWS so the patch below does that too.

My correspondent suggests that the new format be changed to put PSECS
at the end:

  [high-seconds low-seconds usecs repeat-delay function args idle-delay psecs]

to support older code that uses aref or elt.  Does this sound like a
good idea?  It would cater to backward compatiblity better, but would
make the new code a bit weirder.

Here's the patch to fix the bugs mentioned above, which I plan to
install shortly:

=== modified file 'etc/ChangeLog'
--- etc/ChangeLog       2012-09-11 02:28:27 +0000
+++ etc/ChangeLog       2012-09-13 05:56:38 +0000
@@ -1,3 +1,7 @@
+2012-09-13  Paul Eggert  <address@hidden>
+
+       * NEWS: Document timer format change.
+
 2012-09-11  Paul Eggert  <address@hidden>
 
        Simplify, document, and port floating-point (Bug#12381).

=== modified file 'etc/NEWS'
--- etc/NEWS    2012-09-12 19:16:36 +0000
+++ etc/NEWS    2012-09-13 05:56:38 +0000
@@ -101,6 +101,11 @@
 file-attributes and format-time-string, have been changed accordingly.
 Old-format time stamps are still accepted.
 
+** The format of timers in timer-list and timer-idle-list is now
+[HIGH-SECONDS LOW-SECONDS USECS PSECS REPEAT-DELAY FUNCTION ARGS IDLE-DELAY].
+The PSECS slot is new, and uses picosecond resolution.  It can be
+accessed via the new timer--psecs accessor.
+
 ** Emacs now generates backtraces on fatal errors.
 On encountering a fatal error, Emacs now outputs a textual description
 of the fatal signal, and a short backtrace on platforms like glibc

=== modified file 'lisp/ChangeLog'
--- lisp/ChangeLog      2012-09-13 02:41:46 +0000
+++ lisp/ChangeLog      2012-09-13 05:00:33 +0000
@@ -1,3 +1,11 @@
+2012-09-13  Paul Eggert  <address@hidden>
+
+       Fix glitches caused by addition of psec to timers.
+       * image.el (image-animate-timer):
+       * time.el (display-time-world-timer):
+       Use timer--function and timer--args rather than raw access to
+       timer vector.
+
 2012-09-13  Glenn Morris  <address@hidden>
 
        * emacs-lisp/bytecomp.el (byte-compile-warning-prefix):

=== modified file 'lisp/gnus/ChangeLog'
--- lisp/gnus/ChangeLog 2012-09-11 10:08:59 +0000
+++ lisp/gnus/ChangeLog 2012-09-13 05:00:33 +0000
@@ -1,3 +1,9 @@
+2012-09-13  Paul Eggert  <address@hidden>
+
+       Fix glitches caused by addition of psec to timers.
+       * gnus-art.el (gnus-article-stop-animations): Use timer--function
+       rather than raw access to timer vector.
+
 2012-09-11  Julien Danjou  <address@hidden>
 
        * gnus-notifications.el (gnus-notifications): Check for nil values in

=== modified file 'lisp/gnus/gnus-art.el'
--- lisp/gnus/gnus-art.el       2012-08-14 05:34:20 +0000
+++ lisp/gnus/gnus-art.el       2012-09-13 05:00:33 +0000
@@ -4554,7 +4554,7 @@
 (defun gnus-article-stop-animations ()
   (dolist (timer (and (boundp 'timer-list)
                      timer-list))
-    (when (eq (elt timer 5) 'image-animate-timeout)
+    (when (eq (timer--function timer) 'image-animate-timeout)
       (cancel-timer timer))))
 
 (defun gnus-stop-downloads ()

=== modified file 'lisp/image.el'
--- lisp/image.el       2012-08-15 16:29:11 +0000
+++ lisp/image.el       2012-09-13 05:00:33 +0000
@@ -645,8 +645,8 @@
     (while tail
       (setq timer (car tail)
            tail (cdr tail))
-      (if (and (eq (aref timer 5) 'image-animate-timeout)
-              (eq (car-safe (aref timer 6)) image))
+      (if (and (eq (timer--function timer) 'image-animate-timeout)
+              (eq (car-safe (timer--args timer)) image))
          (setq tail nil)
        (setq timer nil)))
     timer))

=== modified file 'lisp/time.el'
--- lisp/time.el        2012-05-04 06:13:18 +0000
+++ lisp/time.el        2012-09-13 05:00:33 +0000
@@ -575,7 +575,8 @@
     (let ((list timer-list))
       (while list
         (let ((elt (pop list)))
-          (when (equal (symbol-name (aref elt 5)) "display-time-world-timer")
+          (when (equal (symbol-name (timer--function elt))
+                      "display-time-world-timer")
             (cancel-timer elt)))))))
 
 ;;;###autoload




--- End Message ---
--- Begin Message --- Subject: Re: bug#12430: Glitches caused by addition of psec to timers Date: Thu, 13 Sep 2012 09:26:07 -0700 User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120828 Thunderbird/15.0
On 09/13/2012 05:49 AM, Stefan Monnier wrote:

> Yes.

OK, thanks, I did that as trunk bzr 110018 and am
marking this bug as done.  The change was simpler than I
thought it would be, which could well mean that
I missed something....



--- End Message ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]