From 5cbd733a778d8e2a69c87e316d02bbbd720de240 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Sun, 8 Feb 2004 23:19:15 +0000 Subject: [PATCH] (row_equal_p): Compare fringe bitmap faces and overlay arrows. (update_frame): Do flush_display if force_flush_display_p to ensure display (specifically fringes) are updated in a timely manner when resizing the frame by dragging the mouse. (update_window_line): Update row if overlay arrow changed. (scrolling_window): Redraw fringe bitmaps if fringe bitmap faces or overlay arrow changed. --- src/dispnew.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/dispnew.c b/src/dispnew.c index 65d4726b1df..4e4b9c56a8d 100644 --- a/src/dispnew.c +++ b/src/dispnew.c @@ -1516,7 +1516,10 @@ row_equal_p (w, a, b, mouse_face_p) if (a->fill_line_p != b->fill_line_p || a->cursor_in_fringe_p != b->cursor_in_fringe_p || a->left_fringe_bitmap != b->left_fringe_bitmap + || a->left_fringe_face_id != b->left_fringe_face_id || a->right_fringe_bitmap != b->right_fringe_bitmap + || a->right_fringe_face_id != b->right_fringe_face_id + || a->overlay_arrow_p != b->overlay_arrow_p || a->exact_window_width_line_p != b->exact_window_width_line_p || a->overlapped_p != b->overlapped_p || (MATRIX_ROW_CONTINUATION_LINE_P (a) @@ -3826,10 +3829,15 @@ update_frame (f, force_p, inhibit_hairy_id_p) paused_p = update_window_tree (root_window, force_p); update_end (f); -#if 0 /* This flush is a performance bottleneck under X, - and it doesn't seem to be necessary anyway. */ - rif->flush_display (f); -#endif + /* This flush is a performance bottleneck under X, + and it doesn't seem to be necessary anyway (in general). + It is necessary when resizing the window with the mouse, or + at least the fringes are not redrawn in a timely manner. ++kfs */ + if (f->force_flush_display_p) + { + rif->flush_display (f); + f->force_flush_display_p = 0; + } } else { @@ -4519,6 +4527,7 @@ update_window_line (w, vpos, mouse_face_overwritten_p) || desired_row->y != current_row->y || desired_row->visible_height != current_row->visible_height || desired_row->cursor_in_fringe_p != current_row->cursor_in_fringe_p + || desired_row->overlay_arrow_p != current_row->overlay_arrow_p || current_row->redraw_fringe_bitmaps_p || desired_row->mode_line_p != current_row->mode_line_p || desired_row->exact_window_width_line_p != current_row->exact_window_width_line_p @@ -5025,7 +5034,10 @@ scrolling_window (w, header_line_p) to_overlapped_p = to->overlapped_p; if (!from->mode_line_p && !w->pseudo_window_p && (to->left_fringe_bitmap != from->left_fringe_bitmap - || to->right_fringe_bitmap != from->right_fringe_bitmap)) + || to->right_fringe_bitmap != from->right_fringe_bitmap + || to->left_fringe_face_id != from->left_fringe_face_id + || to->right_fringe_face_id != from->right_fringe_face_id + || to->overlay_arrow_p != from->overlay_arrow_p)) from->redraw_fringe_bitmaps_p = 1; assign_row (to, from); to->enabled_p = 1, from->enabled_p = 0; -- 2.39.2