changeset 36826:4eacbecdf0d8

(timer_check): Preserve the value of deactivate-mark. (command_loop_1): Undo last change.
author Gerd Moellmann <gerd@gnu.org>
date Thu, 15 Mar 2001 16:31:21 +0000
parents 63b1945845af
children 0973df33fda5
files src/keyboard.c
diffstat 1 files changed, 4 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/keyboard.c	Thu Mar 15 16:29:17 2001 +0000
+++ b/src/keyboard.c	Thu Mar 15 16:31:21 2001 +0000
@@ -1479,10 +1479,6 @@
          this variable differently.  */
       Vdisable_point_adjustment = Qnil;
 
-      /* Process filters and timers may have messed with deactivate-mark.
-	 reset it before we execute the command. */
-      Vdeactivate_mark = Qnil;
-
       /* Execute the command.  */
 
       Vthis_command = cmd;
@@ -4021,17 +4017,18 @@
 	  if (NILP (vector[0]))
 	    {
 	      int was_locked = single_kboard;
-	      int count = specpdl_ptr - specpdl;
+	      int count = BINDING_STACK_SIZE ();
+	      Lisp_Object old_deactivate_mark = Vdeactivate_mark;
 
 	      /* Mark the timer as triggered to prevent problems if the lisp
 		 code fails to reschedule it right.  */
 	      vector[0] = Qt;
 
 	      specbind (Qinhibit_quit, Qt);
-
+	      
 	      call1 (Qtimer_event_handler, chosen_timer);
+	      Vdeactivate_mark = old_deactivate_mark;
 	      timers_run++;
-
 	      unbind_to (count, Qnil);
 
 	      /* Resume allowing input from any kboard, if that was true before.  */