diff options
author | Glenn Morris <rgm@gnu.org> | 2018-11-28 07:51:11 -0800 |
---|---|---|
committer | Glenn Morris <rgm@gnu.org> | 2018-11-28 07:51:11 -0800 |
commit | b58e8b82ededfb314e385d97df1efed2ce84f4db (patch) | |
tree | 2f8caac832104f1825349740693e1497e50b6a4e /src/xdisp.c | |
parent | febdedfa8d43258edc4e0f2debd3910e073e9326 (diff) | |
parent | 094fcf62d289f19a4633275812e9e5e500463e91 (diff) | |
download | emacs-b58e8b82ededfb314e385d97df1efed2ce84f4db.tar.gz |
Merge from origin/emacs-26
094fcf6 Fix more drawing bugs in NS port (bug#32932)
Diffstat (limited to 'src/xdisp.c')
-rw-r--r-- | src/xdisp.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/xdisp.c b/src/xdisp.c index fa7691cdd0f..a0113a05190 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -32360,7 +32360,14 @@ expose_window_tree (struct window *w, XRectangle *r) struct frame *f = XFRAME (w->frame); bool mouse_face_overwritten_p = false; - while (w && !FRAME_GARBAGED_P (f)) + /* NS toolkits may have aleady modified the frame in expectation of + a successful redraw, so don't bail out here if the frame is + garbaged. */ + while (w +#if !defined (HAVE_NS) + && !FRAME_GARBAGED_P (f) +#endif + ) { mouse_face_overwritten_p |= (WINDOWP (w->contents) @@ -32388,12 +32395,16 @@ expose_frame (struct frame *f, int x, int y, int w, int h) TRACE ((stderr, "expose_frame ")); - /* No need to redraw if frame will be redrawn soon. */ +#if !defined (HAVE_NS) + /* No need to redraw if frame will be redrawn soon except under NS + where the toolkit may have already modified the frame in + expectation of us redrawing it. */ if (FRAME_GARBAGED_P (f)) { TRACE ((stderr, " garbaged\n")); return; } +#endif /* If basic faces haven't been realized yet, there is no point in trying to redraw anything. This can happen when we get an expose |