Date: Wed, 9 Oct 2019 01:43:50 +0200
From: Ergus <address@hidden>
Cc: address@hidden, address@hidden, address@hidden
> if (FRAME_GARBAGED_P (f))
> {
> fset_redisplay (f);
> f->garbaged = false; <<<<<<<<<<<<<<<<<<<<
> goto retry_frame;
> }
>
>(if your repository is up to date and you are on the master branch,
>this should be line 15690), does the breakpoint fire after you type
>the "C-x 6 f FILENAME RET" command?
No actually. I only get some messages:
But nothing else; the breakpoint is not reached.
OK, so this is not due to the recent change which introduced the above
code.
In your original message you wrote:
This used to work fine before... I just pull and recompiled (since
saturday)...
Can you tell what was the latest date when this problem in GUI frames
didn't exist in your builds?
Something else I observe is that when I leave the desktop and return
back; the tab-bar is visible, but with the cursor there. When I move the
cursor horizontally, the tabs image is substituted with the text that is
supposed to be in the first visible line that is supposed to be bellow
the tab-bar (attached image with the config.log open.)
Yes, these and other symptoms you described all tell one thing: that
some redisplay optimization is taken that shouldn't be used in this
case. IOW, Emacs optimizes redisplay ignoring the fact that there is
now a tab bar, which usurps portions of display that previously
belonged to some window. I just don't yet understand why this
happens, because the call to SET_FRAME_GARBAGED in
x_change_tab_bar_height should have had the effect of disabling all
the redisplay optimizations for this frame...
Does the change below fix this problem, per chance?
diff --git a/src/xfns.c b/src/xfns.c
index 20e63a2..f2264be 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -1660,6 +1660,8 @@ x_change_tab_bar_height (struct frame *f, int height)
if ((height < old_height) && WINDOWP (f->tab_bar_window))
clear_glyph_matrix (XWINDOW (f->tab_bar_window)->current_matrix);
+ else if (height > old_height)
+ clear_current_matrices (f);
/* Recalculate tabbar height. */
f->n_tab_bar_rows = 0;