summaryrefslogtreecommitdiff
path: root/src/xdisp.c
diff options
context:
space:
mode:
authorGlenn Morris <rgm@gnu.org>2018-11-28 07:51:11 -0800
committerGlenn Morris <rgm@gnu.org>2018-11-28 07:51:11 -0800
commitb58e8b82ededfb314e385d97df1efed2ce84f4db (patch)
tree2f8caac832104f1825349740693e1497e50b6a4e /src/xdisp.c
parentfebdedfa8d43258edc4e0f2debd3910e073e9326 (diff)
parent094fcf62d289f19a4633275812e9e5e500463e91 (diff)
downloademacs-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.c15
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