From: Eli Zaretskii Date: Mon, 27 Apr 2015 15:15:52 +0000 (+0300) Subject: Fix redisplay of frame after loading new fonts X-Git-Tag: emacs-25.0.90~2287 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=d89687b1ba4d0e4a252ca48749103467f2642212;p=emacs.git Fix redisplay of frame after loading new fonts * src/xdisp.c (redisplay_internal): When retrying redisplay of a frame because new fonts were loaded, disable all redisplay optimizations on that frame by calling SET_FRAME_GARBAGED. (Bug#20410) --- diff --git a/src/xdisp.c b/src/xdisp.c index 5a27adc2b18..c2f0b747c6e 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -13359,6 +13359,13 @@ redisplay_internal (void) if (f->fonts_changed) { adjust_frame_glyphs (f); + /* Disable all redisplay optimizations for this frame. + This is because adjust_frame_glyphs resets the + enabled_p flag for all glyph rows of all windows, so + many optimizations will fail anyway, and some might + fail to test that flag and do bogus things as + result. */ + SET_FRAME_GARBAGED (f); f->fonts_changed = false; } /* If cursor type has been changed on the frame @@ -13753,6 +13760,10 @@ redisplay_internal (void) if (f->fonts_changed) { adjust_frame_glyphs (f); + /* Disable all redisplay optimizations for this + frame. For the reasons, see the comment near + the previous call to adjust_frame_glyphs above. */ + SET_FRAME_GARBAGED (f); f->fonts_changed = false; goto retry_frame; }