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

From: Alan Third <[email-masked]>
Date: Thu, 8 Nov 2018 16:17:15 +0000

On Thu, Nov 08, 2018 at 05:35:53PM +0200, Eli Zaretskii wrote:
> > Date: Thu, 8 Nov 2018 15:21:17 +0000
> > From: Alan Third <[email-masked]>
> > Cc: Eli Zaretskii <[email-masked]>, [email-masked],
> > 	[email-masked]
> > 
> > We could try and force Emacs to bend to the NS way by forcing
> > expose_frame and friends to draw WHENEVER REQUESTED, but I don’t know
> > how practical that is, and it would mean making changes in xdisp.c
> > which may be unwelcome.
> 
> What exactly do you mean by WHENEVER REQUESTED?  As opposed to what
> alternative?

At the moment expose_frame doesn’t draw anything if the frame or
window has been marked as garbaged (there may be other circumstances
too). Unfortunately this results in areas being cleared and not being
redrawn as Cocoa/GNUstep assume it is always possible to redraw
anything at any time.

It would be fine if there was a way to say to Cocoa/GNUstep to just
ignore that dirty rectangle for now, but there doesn’t seem to be, so
it clears the rectangle, asks expose_frame to draw it, but it doesn’t,
then marks the dirty rectangle as clean and continues.

If I could suppress the clearing action that would solve the problem.

If expose_frame could draw the rectangle as it was before the
frame/window was marked garbaged, that would also solve the problem.

I don’t believe the former is possible, and I don’t know if the latter
is possible.
-- 
Alan Third