aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRichard M. Stallman2003-04-30 12:03:53 +0000
committerRichard M. Stallman2003-04-30 12:03:53 +0000
commitccbb9ed2e0673e4e69761abc32ceb973a1d3645e (patch)
treedac256c888c7968b319e60a45288e3b7a4435085 /src
parent167899c437fa059886c387fc05ffb6d4b2e83c2e (diff)
downloademacs-ccbb9ed2e0673e4e69761abc32ceb973a1d3645e.tar.gz
emacs-ccbb9ed2e0673e4e69761abc32ceb973a1d3645e.zip
(move_it_vertically_backward): Do the final big else even if nlines is 0.
(redisplay_internal): Finish the per-frame loop even if redisplay is suspended by input.
Diffstat (limited to 'src')
-rw-r--r--src/xdisp.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/xdisp.c b/src/xdisp.c
index 7c9a52cbba7..18e57edb28f 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -5823,10 +5823,14 @@ move_it_vertically_backward (it, dy)
5823 5823
5824 move_it_to (&it2, start_pos, -1, -1, -1, MOVE_TO_POS); 5824 move_it_to (&it2, start_pos, -1, -1, -1, MOVE_TO_POS);
5825 xassert (IT_CHARPOS (*it) >= BEGV); 5825 xassert (IT_CHARPOS (*it) >= BEGV);
5826 /* H is the actual vertical distance from the position in *IT
5827 and the starting position. */
5826 h = it2.current_y - it->current_y; 5828 h = it2.current_y - it->current_y;
5829 /* NLINES is the distance in number of lines. */
5827 nlines = it2.vpos - it->vpos; 5830 nlines = it2.vpos - it->vpos;
5828 5831
5829 /* Correct IT's y and vpos position. */ 5832 /* Correct IT's y and vpos position
5833 so that they are relative to the starting point. */
5830 it->vpos -= nlines; 5834 it->vpos -= nlines;
5831 it->current_y -= h; 5835 it->current_y -= h;
5832 5836
@@ -5838,10 +5842,10 @@ move_it_vertically_backward (it, dy)
5838 move_it_by_lines (it, nlines, 1); 5842 move_it_by_lines (it, nlines, 1);
5839 xassert (IT_CHARPOS (*it) <= start_pos); 5843 xassert (IT_CHARPOS (*it) <= start_pos);
5840 } 5844 }
5841 else if (nlines) 5845 else
5842 { 5846 {
5843 /* The y-position we try to reach. Note that h has been 5847 /* The y-position we try to reach, relative to *IT.
5844 subtracted in front of the if-statement. */ 5848 Note that H has been subtracted in front of the if-statement. */
5845 int target_y = it->current_y + h - dy; 5849 int target_y = it->current_y + h - dy;
5846 int y0 = it3.current_y; 5850 int y0 = it3.current_y;
5847 int y1 = line_bottom_y (&it3); 5851 int y1 = line_bottom_y (&it3);
@@ -9999,8 +10003,10 @@ redisplay_internal (preserve_echo_area)
9999 /* Update the display. */ 10003 /* Update the display. */
10000 set_window_update_flags (XWINDOW (f->root_window), 1); 10004 set_window_update_flags (XWINDOW (f->root_window), 1);
10001 pause |= update_frame (f, 0, 0); 10005 pause |= update_frame (f, 0, 0);
10006#if 0 /* Exiting the loop can leave the wrong value for buffer_shared. */
10002 if (pause) 10007 if (pause)
10003 break; 10008 break;
10009#endif
10004 10010
10005 if (n == size) 10011 if (n == size)
10006 { 10012 {