Thank you Alan for taking a look at this thread. Here is the code ... Using a build of the master branch as of today (10/12/2018): git reset --hard 9c231a447014823ed1955e16b6693adbe041ca99 git apply /path/to/attached/patch.diff Build a GUI version of Emacs --with-ns Open up the newly built Emacs and type: M-x mc-test or M-x +-mode ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; > Date: [10-12-2018 01:54:15] <12 Oct 2018 09:54:15 +0100> > From: Alan Third > To: Keith David Bershatsky > Cc: Emacs-Devel devel > Subject: Re: nsterm.m: How to play nice with Mojave revisions -- #17684 (crosshairs) and #22873 (multiple fake cursors) ... > > * * * > > Hi Keith, this looks a bit strange. > > The idea is that when running redisplay cocoa does not let you draw to the screen, so ns_clip_to_rect, etc., marks the area as needing to be redrawn later, and returns > NO so you know not to try drawing to the frame. > > Later drawRect is called with a list of the areas that have been marked as needing redrawn and it calls expose on those areas and so Emacs runs the drawing functions > again, but this time ns_clip_to_rect returns YES so you know you can go ahead and draw. > > For some reason NSTRACE doesn't show the functions being called from within drawRect, so if you're relying on that it may mislead you. > > I don't know what's going on with your code, is there somewhere I can have a look?