1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-03 02:31:03 -08:00

(redisplay_internal): Only try to hscroll each frame once

to avoid redisplay looping hscrolling back and forth ad infinitum.
This commit is contained in:
Kim F. Storm 2005-07-18 20:59:41 +00:00
parent d3378f02fd
commit a61fed91f7

View file

@ -10172,6 +10172,16 @@ redisplay_internal (preserve_echo_area)
++redisplaying_p;
specbind (Qinhibit_free_realized_faces, Qnil);
{
Lisp_Object tail, frame;
FOR_EACH_FRAME (tail, frame)
{
struct frame *f = XFRAME (frame);
f->already_hscrolled_p = 0;
}
}
retry:
pause = 0;
reconsider_clip_changes (w, current_buffer);
@ -10606,8 +10616,12 @@ redisplay_internal (preserve_echo_area)
if (FRAME_VISIBLE_P (f) && !FRAME_OBSCURED_P (f))
{
/* See if we have to hscroll. */
if (hscroll_windows (f->root_window))
goto retry;
if (!f->already_hscrolled_p)
{
f->already_hscrolled_p = 1;
if (hscroll_windows (f->root_window))
goto retry;
}
/* Prevent various kinds of signals during display
update. stdio is not robust about handling