summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlan Third <alan@idiocy.org>2019-01-11 16:52:59 +0000
committerAlan Third <alan@idiocy.org>2019-01-15 16:03:06 +0000
commitc9f6f86814165ae277fe1618135151d0cdf84b8e (patch)
tree9a2b269d14f80c6bf7f245ff8d96b92d29adf8f7 /src
parent00ba2267ede311da0cd53261780fb0b781ca42dd (diff)
downloademacs-c9f6f86814165ae277fe1618135151d0cdf84b8e.tar.gz
Prevent redrawing if frame is garbaged
* src/nsterm.m ([EmacsView viewWillDraw]): Cancel drawing if the frame has been garbaged. * src/xdisp.c (expose_window_tree, expose_frame): Remove NS only exceptions.
Diffstat (limited to 'src')
-rw-r--r--src/nsterm.m8
-rw-r--r--src/xdisp.c14
2 files changed, 9 insertions, 13 deletions
diff --git a/src/nsterm.m b/src/nsterm.m
index c09f684daf4..bbd2c84214c 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -8077,6 +8077,14 @@ not_in_argv (NSString *arg)
}
+- (void)viewWillDraw
+{
+ /* If the frame has been garbaged there's no point in redrawing
+ anything. */
+ if (FRAME_GARBAGED_P (emacsframe))
+ [self setNeedsDisplay:NO];
+}
+
- (void)drawRect: (NSRect)rect
{
const NSRect *rectList;
diff --git a/src/xdisp.c b/src/xdisp.c
index 94ce1c29a0c..0c3754a338f 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -32266,14 +32266,7 @@ expose_window_tree (struct window *w, XRectangle *r)
struct frame *f = XFRAME (w->frame);
bool mouse_face_overwritten_p = false;
- /* 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
- )
+ while (w && !FRAME_GARBAGED_P (f))
{
mouse_face_overwritten_p
|= (WINDOWP (w->contents)
@@ -32301,16 +32294,11 @@ expose_frame (struct frame *f, int x, int y, int w, int h)
TRACE ((stderr, "expose_frame "));
-#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