diff options
| author | Eli Zaretskii | 2015-04-27 18:15:52 +0300 |
|---|---|---|
| committer | Eli Zaretskii | 2015-04-27 18:15:52 +0300 |
| commit | d89687b1ba4d0e4a252ca48749103467f2642212 (patch) | |
| tree | 53a0fc7506f10965549c33e8b2580b9ab8d39608 /src | |
| parent | def0df01fb2cfa14ed87a9d719e0ccc45b363fec (diff) | |
| download | emacs-d89687b1ba4d0e4a252ca48749103467f2642212.tar.gz emacs-d89687b1ba4d0e4a252ca48749103467f2642212.zip | |
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)
Diffstat (limited to 'src')
| -rw-r--r-- | src/xdisp.c | 11 |
1 files changed, 11 insertions, 0 deletions
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) | |||
| 13359 | if (f->fonts_changed) | 13359 | if (f->fonts_changed) |
| 13360 | { | 13360 | { |
| 13361 | adjust_frame_glyphs (f); | 13361 | adjust_frame_glyphs (f); |
| 13362 | /* Disable all redisplay optimizations for this frame. | ||
| 13363 | This is because adjust_frame_glyphs resets the | ||
| 13364 | enabled_p flag for all glyph rows of all windows, so | ||
| 13365 | many optimizations will fail anyway, and some might | ||
| 13366 | fail to test that flag and do bogus things as | ||
| 13367 | result. */ | ||
| 13368 | SET_FRAME_GARBAGED (f); | ||
| 13362 | f->fonts_changed = false; | 13369 | f->fonts_changed = false; |
| 13363 | } | 13370 | } |
| 13364 | /* If cursor type has been changed on the frame | 13371 | /* If cursor type has been changed on the frame |
| @@ -13753,6 +13760,10 @@ redisplay_internal (void) | |||
| 13753 | if (f->fonts_changed) | 13760 | if (f->fonts_changed) |
| 13754 | { | 13761 | { |
| 13755 | adjust_frame_glyphs (f); | 13762 | adjust_frame_glyphs (f); |
| 13763 | /* Disable all redisplay optimizations for this | ||
| 13764 | frame. For the reasons, see the comment near | ||
| 13765 | the previous call to adjust_frame_glyphs above. */ | ||
| 13766 | SET_FRAME_GARBAGED (f); | ||
| 13756 | f->fonts_changed = false; | 13767 | f->fonts_changed = false; |
| 13757 | goto retry_frame; | 13768 | goto retry_frame; |
| 13758 | } | 13769 | } |