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


From: Stefan Monnier
Subject: [Emacs-diffs] Changes to emacs/src/keyboard.c
Date: Sun, 15 Jun 2003 17:46:53 -0400

Index: emacs/src/keyboard.c
diff -c emacs/src/keyboard.c:1.750 emacs/src/keyboard.c:1.751
*** emacs/src/keyboard.c:1.750  Wed Jun  4 18:05:52 2003
--- emacs/src/keyboard.c        Sun Jun 15 17:46:53 2003
***************
*** 6627,6632 ****
--- 6627,6633 ----
  {
    struct input_event event;
    Lisp_Object tem;
+   EVENT_INIT (event);
  
    event.kind = BUFFER_SWITCH_EVENT;
    event.frame_or_window = Qnil;
***************
*** 6685,6690 ****
--- 6686,6694 ----
    register int i;
    int nread;
  
+   for (i = 0; i < KBD_BUFFER_SIZE; i++)
+     EVENT_INIT (buf[i]);
+ 
    if (read_socket_hook)
      /* No need for FIONREAD or fcntl; just say don't wait.  */
      nread = (*read_socket_hook) (input_fd, buf, KBD_BUFFER_SIZE, expected);
***************
*** 11375,11378 ****
--- 11379,11421 ----
     *                      "handle-select-window"); */
    initial_define_lispy_key (Vspecial_event_map, "save-session",
                            "handle-save-session");
+ }
+ 
+ /* Mark the pointers in the kboard objects.
+    Called by the Fgarbage_collector.  */
+ void
+ mark_kboards ()
+ {
+   KBOARD *kb;
+   Lisp_Object *p;
+   for (kb = all_kboards; kb; kb = kb->next_kboard)
+     {
+       if (kb->kbd_macro_buffer)
+       for (p = kb->kbd_macro_buffer; p < kb->kbd_macro_ptr; p++)
+         mark_object (p);
+       mark_object (&kb->Voverriding_terminal_local_map);
+       mark_object (&kb->Vlast_command);
+       mark_object (&kb->Vreal_last_command);
+       mark_object (&kb->Vprefix_arg);
+       mark_object (&kb->Vlast_prefix_arg);
+       mark_object (&kb->kbd_queue);
+       mark_object (&kb->defining_kbd_macro);
+       mark_object (&kb->Vlast_kbd_macro);
+       mark_object (&kb->Vsystem_key_alist);
+       mark_object (&kb->system_key_syms);
+       mark_object (&kb->Vdefault_minibuffer_frame);
+       mark_object (&kb->echo_string);
+     }
+   {
+     struct input_event *event;
+     for (event = kbd_fetch_ptr; event != kbd_store_ptr; event++)
+       {
+       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);
+       }
+   }
  }




reply via email to

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