From 2837e25cafefea84d39a613b0d809194e0f75af0 Mon Sep 17 00:00:00 2001 From: Alan Third Date: Sat, 21 Aug 2021 13:09:37 +0100 Subject: [PATCH] Fix display bug on macOS (bug#50112) * src/nsterm.m ([EmacsLayer initWithColorSpace:]): Use the colorspace setter. ([EmacsLayer setColorSpace:]): Sometimes we seem to get null colorspaces, so set a default in this case. ([EmacsLayer getContext]): Check whether there's been a surface or graphics context allocation failure and log it. --- src/nsterm.m | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/nsterm.m b/src/nsterm.m index ba5d81fb6cd..1c1f0c8f239 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -9394,7 +9394,7 @@ nswindow_orderedIndex_sort (id w1, id w2, void *c) if (self) { cache = [[NSMutableArray arrayWithCapacity:CACHE_MAX_SIZE] retain]; - colorSpace = cs; + [self setColorSpace:cs]; } else { @@ -9409,7 +9409,10 @@ nswindow_orderedIndex_sort (id w1, id w2, void *c) { /* We don't need to clear the cache because the new colorspace will be used next time we create a new context. */ - colorSpace = cs; + if (cs) + colorSpace = cs; + else + colorSpace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); } @@ -9505,6 +9508,12 @@ nswindow_orderedIndex_sort (id w1, id w2, void *c) (id)kIOSurfacePixelFormat:[NSNumber numberWithUnsignedInt:'BGRA']}); } + if (!surface) + { + NSLog (@"Failed to create IOSurface for frame %@", [self delegate]); + return nil; + } + IOReturn lockStatus = IOSurfaceLock (surface, 0, nil); if (lockStatus != kIOReturnSuccess) NSLog (@"Failed to lock surface: %x", lockStatus); @@ -9522,6 +9531,15 @@ nswindow_orderedIndex_sort (id w1, id w2, void *c) (kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host)); + if (!context) + { + NSLog (@"Failed to create context for frame %@", [self delegate]); + IOSurfaceUnlock (currentSurface, 0, nil); + CFRelease (currentSurface); + currentSurface = nil; + return nil; + } + CGContextTranslateCTM(context, 0, IOSurfaceGetHeight (currentSurface)); CGContextScaleCTM(context, scale, -scale); } -- 2.39.5