On Sat, Mar 22, 2025 at 9:41 AM, Eli Zaretskii <eliz@gnu.org> wrote:

From: Aaron Jensen <aaronjensen@gmail.com>
Date: Sat, 22 Mar 2025 09:17:08 -0700

In my config, I definitely see matrix comparisons when hidden buffers are updated. It's row_equal_p and update_text_area that are called in rapid succession even when the shell buffer is not visible. I tried disabling both my tab bar and my header line (I don't use a mode line) and I still saw it updating.

Here's an example log output, this repeats as quickly as yes emits "y"

dispnew.c:4775
dispnew.c:1295
dispnew.c:1295
dispnew.c:1295
dispnew.c:1295
dispnew.c:1295
dispnew.c:1295
dispnew.c:1295
dispnew.c:4775

Is the mode_line_p flag of the glyph row set when these comparisons are made?


I see this:

update_text_area updated_row->mode_line_p: 0
update_text_area updated_row->mode_line_p: 1
row_equal_p a->mode_line_p: 0 b->mode_line_p: 0
row_equal_p a->mode_line_p: 0 b->mode_line_p: 0
row_equal_p a->mode_line_p: 0 b->mode_line_p: 0
row_equal_p a->mode_line_p: 0 b->mode_line_p: 0
row_equal_p a->mode_line_p: 0 b->mode_line_p: 0
row_equal_p a->mode_line_p: 0 b->mode_line_p: 0
row_equal_p a->mode_line_p: 0 b->mode_line_p: 0
row_equal_p a->mode_line_p: 0 b->mode_line_p: 0
row_equal_p a->mode_line_p: 0 b->mode_line_p: 0
row_equal_p a->mode_line_p: 0 b->mode_line_p: 0
row_equal_p a->mode_line_p: 0 b->mode_line_p: 0
row_equal_p a->mode_line_p: 0 b->mode_line_p: 0
… Many more of these in each iteration …

So it's set in one update_text_area, but not another.

Aaron