Subject: bug#32932: 27.0.50; render bugs on macOS Mojave

From: Aaron Jensen <[email-masked]>
Date: Mon, 5 Nov 2018 08:11:29 -0800

On November 4, 2018 at 12:11:52 PM, Alan Third
([email-masked](mailto:[email-masked])) wrote:

> After thinking about this for a while I realised that what we probably
> need to do is just make sure the frame is updated before redisplay
> starts changing it.
>
> This seems to work here:
>
> modified src/nsterm.m
> @@ -1061,6 +1061,17 @@ static NSRect constrain_frame_rect(NSRect frameRect, bool isFullscreen)
>
> ns_update_auto_hide_menu_bar ();
>
> + /* Flush any existing changes to screen before redisplay gets going.
> + If we don't do this then it's possible for redisplay to mark
> + areas as garbaged so they won't be redrawn in the next drawRect
> + call.
> +
> + Is this a bad thing to do since we're effectively calling
> + frame_expose from within redisplay? */
> + block_input ();
> + [FRAME_NS_VIEW (f) displayIfNeeded];
> + unblock_input ();
> +
> if ([view isFullscreen] && [view fsIsNative])
> {
> // Fix reappearing tool bar in fullscreen for Mac OS X 10.7

That works for me as well for my repro. I’ll try it out for a while
and report back if I notice any issues.

Thanks,

Aaron