]> git.eshelyaron.com Git - emacs.git/commit
Improve performance of NS port's display on macOS
authorAlan Third <alan@idiocy.org>
Fri, 21 May 2021 12:33:56 +0000 (13:33 +0100)
committerAlan Third <alan@idiocy.org>
Tue, 1 Jun 2021 18:51:21 +0000 (19:51 +0100)
commit246e107d73e633c06478eaf021776acedef9dafc
treecb4ac63a1b3f6168fa7d013a792c427ccb2ec4ae
parenta32e65b357ff634a976a24ee5d5c340addc025cd
Improve performance of NS port's display on macOS

* src/nsterm.h: Update EmacsSurface definition.
* src/nsterm.m ([EmacsView focusOnDrawingBuffer]): Don't change the
CGContext's settings directly.
([EmacsView unfocusDrawingBuffer]): Don't release the context here.
(CACHE_MAX_SIZE): Add maximum cache size.
([EmacsView updateLayer]): Send a request for getContext, which will
copy the buffer and create the context if it doesn't already exist, to
the NS run loop.
([EmacsSurface initWithSize:ColorSpace:Scale:]): Add the scale factor
and if there's already a CGContext available, reuse it.
([EmacsSurface dealloc]): No longer need to release lastSurface
separately.
([EmacsSurface getContext]): Don't create more surfaces than we have
spaces for in the cache.
([EmacsSurface releaseContext]): If there's no context don't try to
release it and put currentSurface back on the cache instead of
lastSurface.
([EmacsSurface copyContentsTo:]): Don't try to copy if the source and
destination are actually the same surface.
src/nsterm.h
src/nsterm.m