summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlan Third <alan@idiocy.org>2021-02-24 09:52:42 +0000
committerAlan Third <alan@idiocy.org>2021-02-25 17:58:59 +0000
commit056b468f74ff0aab41febaf6dbd4db23f3bebba2 (patch)
treef79a6258f356cb67e45942289a7fd4e93a8b64b3 /src
parent90ac40570280f4f423b55a2d9eea5a44317a66e3 (diff)
Fix freeze on older macOS's (bug#46687)
* src/nsterm.m ([EmacsView windowDidChangeBackingProperties:]): ([EmacsView viewWillDraw]): Only run this code when actually drawing to an offscreen bitmap.
Diffstat (limited to 'src')
-rw-r--r--src/nsterm.m20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/nsterm.m b/src/nsterm.m
index 88317f88393..bf175bbd188 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -8411,13 +8411,16 @@ not_in_argv (NSString *arg)
{
NSTRACE ("EmacsView windowDidChangeBackingProperties:]");
- NSRect frame = [self frame];
+ if ([self wantsUpdateLayer])
+ {
+ NSRect frame = [self frame];
- [surface release];
- surface = nil;
+ [surface release];
+ surface = nil;
- ns_clear_frame (emacsframe);
- expose_frame (emacsframe, 0, 0, NSWidth (frame), NSHeight (frame));
+ ns_clear_frame (emacsframe);
+ expose_frame (emacsframe, 0, 0, NSWidth (frame), NSHeight (frame));
+ }
}
#endif /* NS_DRAW_TO_BUFFER */
@@ -8480,7 +8483,7 @@ not_in_argv (NSString *arg)
}
-#ifdef NS_IMPL_COCOA
+#ifdef NS_DRAW_TO_BUFFER
/* If the frame has been garbaged but the toolkit wants to draw, for
example when resizing the frame, we end up with a blank screen.
Sometimes this results in an unpleasant flicker, so try to
@@ -8488,7 +8491,8 @@ not_in_argv (NSString *arg)
- (void)viewWillDraw
{
if (FRAME_GARBAGED_P (emacsframe)
- && !redisplaying_p)
+ && !redisplaying_p
+ && [self wantsUpdateLayer])
{
/* If there is IO going on when redisplay is run here Emacs
crashes. I think it's because this code will always be run
@@ -8505,10 +8509,8 @@ not_in_argv (NSString *arg)
waiting_for_input = owfi;
}
}
-#endif
-#ifdef NS_DRAW_TO_BUFFER
- (BOOL)wantsUpdateLayer
{
#if MAC_OS_X_VERSION_MIN_REQUIRED < 101400