Subject: bug#14616: 24.3.50; Excessive cursor movement on non-X Emacs

From: Lars Magne Ingebrigtsen <[email-masked]>
Date: Mon, 05 Aug 2013 21:10:37 +0200

Eli Zaretskii <[email-masked]> writes:

> What does frame-list return after you start emacs -nw like that?

(frame-list)
=>
(#<frame emacs 0x2eb0d98> #<frame F1 0xc12be0>)

(mapcar (lambda (f) (pp (frame-parameters) (current-buffer))) (frame-list))
=>
((buried-buffer-list #<buffer .newsrc-dribble>)
 (buffer-list #<buffer *scratch*> #<buffer  *Minibuf-1*> #<buffer *sc> #<buffer *Group*>)
 (minibuffer . #<window 0xc12f90 on  *Minibuf-0*>)
 (name . "F1")
 (mouse-color . "red")
 (cursor-type . box)
 (unsplittable)
 (modeline . t)
 (width . 142)
 (height . 25)
 (font . "tty")
 (background-color . "unspecified-bg")
 (tool-bar-lines . 0)
 (menu-bar-lines . 0)
 (vertical-scroll-bars)
 (cursor-color . "white")
 (foreground-color . "unspecified-fg")
 (background-mode . dark)
 (display-type . color)
 (tty . "/dev/tty")
 (tty-type . "xterm"))
((buried-buffer-list #<buffer .newsrc-dribble>)
 (buffer-list #<buffer *scratch*> #<buffer  *Minibuf-1*> #<buffer *sc> #<buffer *Group*>)
 (minibuffer . #<window 0xc12f90 on  *Minibuf-0*>)
 (name . "F1")
 (mouse-color . "red")
 (cursor-type . box)
 (unsplittable)
 (modeline . t)
 (width . 142)
 (height . 25)
 (font . "tty")
 (background-color . "unspecified-bg")
 (tool-bar-lines . 0)
 (menu-bar-lines . 0)
 (vertical-scroll-bars)
 (cursor-color . "white")
 (foreground-color . "unspecified-fg")
 (background-mode . dark)
 (display-type . color)
 (tty . "/dev/tty")
 (tty-type . "xterm"))

>> 0x0000000000420725 in do_switch_frame (frame=12659685, track=1,
>> for_deletion=0, norecord=12571250) at frame.c:844
>> 844		  SET_FRAME_VISIBLE (XFRAME (frame), 1);
>
> We are close.  What I need to know now is what is 'frame" and what is
> 'top_frame' at this point.  You can define this as the watchpoint's
> commands:
>
>   > pp frame
>   > pp top_frame
>   > continue
>   > end
>
> Then run the recipe again, and let's see what this shows.

Uhm.  I think I must have done something wrong...  I get the stuff at
the end in the backtrace file, and the following in gdb interactively:

#<frame F1 0xc12be0>
#<frame emacs 0x2f8fba8>
(gdb)

Must be lacking a "cont" somewhere...  Anyway, are those the values you
wanted?

Log file:

Hardware watchpoint 4: ((struct frame *) 0xc12be0)->garbaged

Old value = 1
New value = 0
clear_garbaged_frames () at xdisp.c:10729
10729		      f->resized_p = 0;
Continuing.
Hardware watchpoint 4: ((struct frame *) 0xc12be0)->garbaged

Old value = 0
New value = 1
0x0000000000420725 in do_switch_frame (frame=12659685, track=1, for_deletion=0, norecord=12571202) at frame.c:844
844		  SET_FRAME_VISIBLE (XFRAME (frame), 1);
Hardware watchpoint 4: ((struct frame *) 0xc12be0)->garbaged

Old value = 1
New value = 0
clear_garbaged_frames () at xdisp.c:10729
10729		      f->resized_p = 0;
Continuing.
Hardware watchpoint 4: ((struct frame *) 0xc12be0)->garbaged

Old value = 0
New value = 1
0x0000000000420725 in do_switch_frame (frame=12659685, track=1, for_deletion=0, norecord=12571250) at frame.c:844
844		  SET_FRAME_VISIBLE (XFRAME (frame), 1);
Hardware watchpoint 4: ((struct frame *) 0xc12be0)->garbaged

Old value = 1
New value = 0
clear_garbaged_frames () at xdisp.c:10729
10729		      f->resized_p = 0;
Continuing.
Hardware watchpoint 4: ((struct frame *) 0xc12be0)->garbaged

-- 
(domestic pets only, the antidote for overdose, milk.)
  No Gnus T-Shirt for sale: http://ingebrigtsen.no/no.php
  and http://lars.ingebrigtsen.no/2013/08/twenty-years-of-september.html