emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to emacs/src/keyboard.c [lexbind]


From: Miles Bader
Subject: [Emacs-diffs] Changes to emacs/src/keyboard.c [lexbind]
Date: Tue, 06 Jul 2004 07:12:59 -0400

Index: emacs/src/keyboard.c
diff -c emacs/src/keyboard.c:1.681.2.8 emacs/src/keyboard.c:1.681.2.9
*** emacs/src/keyboard.c:1.681.2.8      Tue Apr 27 14:08:50 2004
--- emacs/src/keyboard.c        Tue Jul  6 09:14:35 2004
***************
*** 996,1001 ****
--- 996,1006 ----
    int count = SPECPDL_INDEX ();
    Lisp_Object buffer;
  
+   /* If we enter while input is blocked, don't lock up here.
+      This may happen through the debugger during redisplay.  */
+   if (INPUT_BLOCKED_P)
+     return Qnil;
+ 
    command_loop_level++;
    update_mode_lines = 1;
  
***************
*** 1294,1299 ****
--- 1299,1310 ----
    if (display_hourglass_p)
      cancel_hourglass ();
  #endif
+ 
+   /* Unblock input if we enter with input blocked.  This may happen if
+      redisplay traps e.g. during tool-bar update with input blocked.  */
+   while (INPUT_BLOCKED_P)
+     UNBLOCK_INPUT;
+ 
    return Fthrow (Qtop_level, Qnil);
  }
  
***************
*** 3967,3975 ****
        else if (event->kind == LANGUAGE_CHANGE_EVENT)
        {
          /* Make an event (language-change (FRAME CHARSET LCID)).  */
!         obj = Fcons (event->modifiers, Qnil);
!         obj = Fcons (event->code, obj);
!         obj = Fcons (event->frame_or_window, obj);
          obj = Fcons (Qlanguage_change, Fcons (obj, Qnil));
          kbd_fetch_ptr = event + 1;
        }
--- 3978,3984 ----
        else if (event->kind == LANGUAGE_CHANGE_EVENT)
        {
          /* Make an event (language-change (FRAME CHARSET LCID)).  */
!         obj = Fcons (event->frame_or_window, Qnil);
          obj = Fcons (Qlanguage_change, Fcons (obj, Qnil));
          kbd_fetch_ptr = event + 1;
        }
***************
*** 11413,11420 ****
        {
        if (event == kbd_buffer + KBD_BUFFER_SIZE)
          event = kbd_buffer;
!       mark_object (event->x);
!       mark_object (event->y);
        mark_object (event->frame_or_window);
        mark_object (event->arg);
        }
--- 11422,11432 ----
        {
        if (event == kbd_buffer + KBD_BUFFER_SIZE)
          event = kbd_buffer;
!       if (event->kind != SELECTION_REQUEST_EVENT)
!         {
!           mark_object (event->x);
!           mark_object (event->y);
!         }
        mark_object (event->frame_or_window);
        mark_object (event->arg);
        }




reply via email to

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