diff options
| author | Eli Zaretskii | 2016-11-20 19:28:37 +0200 |
|---|---|---|
| committer | Eli Zaretskii | 2016-11-20 19:28:37 +0200 |
| commit | 56a47981cc921369dd124cc023ca1469225b1fa7 (patch) | |
| tree | 4fa83c6600e6c85b57a4d2118bfa8c5e0b1137e4 /src | |
| parent | 22946702b4296c0e42e4baf6221e205b52d05cbf (diff) | |
| download | emacs-56a47981cc921369dd124cc023ca1469225b1fa7.tar.gz emacs-56a47981cc921369dd124cc023ca1469225b1fa7.zip | |
Fix redrawing non-selected frame after resize on MS-Windows
* src/xdisp.c (redisplay_internal): If all the frames were
successfully updated, reset the "garbaged" flag of each frame, to
make sure it doesn't stay set.
* src/w32term.c (w32_read_socket): Don't clear the frame if it's
"garbaged", since expose_frame won't redraw the foreground then.
(Bug#24642)
Diffstat (limited to 'src')
| -rw-r--r-- | src/w32term.c | 15 | ||||
| -rw-r--r-- | src/xdisp.c | 1 |
2 files changed, 12 insertions, 4 deletions
diff --git a/src/w32term.c b/src/w32term.c index e8d66c9e5a1..ae0f741f24c 100644 --- a/src/w32term.c +++ b/src/w32term.c | |||
| @@ -4628,11 +4628,18 @@ w32_read_socket (struct terminal *terminal, | |||
| 4628 | } | 4628 | } |
| 4629 | else | 4629 | else |
| 4630 | { | 4630 | { |
| 4631 | HDC hdc = get_frame_dc (f); | 4631 | /* Erase background again for safety. But don't do |
| 4632 | that if the frame's 'garbaged' flag is set, since | ||
| 4633 | in that case expose_frame will do nothing, and if | ||
| 4634 | the various redisplay flags happen to be unset, | ||
| 4635 | we are left with a blank frame. */ | ||
| 4636 | if (!FRAME_GARBAGED_P (f)) | ||
| 4637 | { | ||
| 4638 | HDC hdc = get_frame_dc (f); | ||
| 4632 | 4639 | ||
| 4633 | /* Erase background again for safety. */ | 4640 | w32_clear_rect (f, hdc, &msg.rect); |
| 4634 | w32_clear_rect (f, hdc, &msg.rect); | 4641 | release_frame_dc (f, hdc); |
| 4635 | release_frame_dc (f, hdc); | 4642 | } |
| 4636 | expose_frame (f, | 4643 | expose_frame (f, |
| 4637 | msg.rect.left, | 4644 | msg.rect.left, |
| 4638 | msg.rect.top, | 4645 | msg.rect.top, |
diff --git a/src/xdisp.c b/src/xdisp.c index c045ced000b..1420a4a7e36 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -14116,6 +14116,7 @@ redisplay_internal (void) | |||
| 14116 | if (f->updated_p) | 14116 | if (f->updated_p) |
| 14117 | { | 14117 | { |
| 14118 | f->redisplay = false; | 14118 | f->redisplay = false; |
| 14119 | f->garbaged = false; | ||
| 14119 | mark_window_display_accurate (f->root_window, true); | 14120 | mark_window_display_accurate (f->root_window, true); |
| 14120 | if (FRAME_TERMINAL (f)->frame_up_to_date_hook) | 14121 | if (FRAME_TERMINAL (f)->frame_up_to_date_hook) |
| 14121 | FRAME_TERMINAL (f)->frame_up_to_date_hook (f); | 14122 | FRAME_TERMINAL (f)->frame_up_to_date_hook (f); |