From: Stefan Csomor Date: Sun, 20 Feb 2011 06:31:12 +0000 (+0000) Subject: handling nil images correctly, solves #12956 X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/89a5da7c75ceb8b6c2f0969a2d3bdbb8a88e1747?ds=inline handling nil images correctly, solves #12956 git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66979 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/osx/carbon/utilscocoa.mm b/src/osx/carbon/utilscocoa.mm index af37cccbe5..5109a17953 100644 --- a/src/osx/carbon/utilscocoa.mm +++ b/src/osx/carbon/utilscocoa.mm @@ -408,19 +408,23 @@ WX_NSImage wxOSXGetNSImageFromCGImage( CGImageRef image ) CGImageRef wxOSXCreateCGImageFromNSImage( WX_NSImage nsimage ) { // based on http://www.mail-archive.com/cocoa-dev@lists.apple.com/msg18065.html - - NSSize imageSize = [nsimage size]; - CGColorSpaceRef genericRGB = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); - CGContextRef context = CGBitmapContextCreate(NULL, imageSize.width, imageSize.height, 8, 0, genericRGB, kCGImageAlphaPremultipliedFirst); - NSGraphicsContext *nsGraphicsContext = [NSGraphicsContext graphicsContextWithGraphicsPort:context flipped:NO]; - [NSGraphicsContext saveGraphicsState]; - [NSGraphicsContext setCurrentContext:nsGraphicsContext]; - [[NSColor whiteColor] setFill]; - NSRectFill(NSMakeRect(0.0, 0.0, imageSize.width, imageSize.height)); - [nsimage drawAtPoint:NSZeroPoint fromRect:NSZeroRect operation:NSCompositeCopy fraction:1.0]; - [NSGraphicsContext setCurrentContext:nsGraphicsContext]; - CGImageRef image = CGBitmapContextCreateImage(context); - CFRelease(context); + + CGImageRef image = NULL; + if (nsimage != nil) + { + NSSize imageSize = [nsimage size]; + CGColorSpaceRef genericRGB = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB); + CGContextRef context = CGBitmapContextCreate(NULL, imageSize.width, imageSize.height, 8, 0, genericRGB, kCGImageAlphaPremultipliedFirst); + NSGraphicsContext *nsGraphicsContext = [NSGraphicsContext graphicsContextWithGraphicsPort:context flipped:NO]; + [NSGraphicsContext saveGraphicsState]; + [NSGraphicsContext setCurrentContext:nsGraphicsContext]; + [[NSColor whiteColor] setFill]; + NSRectFill(NSMakeRect(0.0, 0.0, imageSize.width, imageSize.height)); + [nsimage drawAtPoint:NSZeroPoint fromRect:NSZeroRect operation:NSCompositeCopy fraction:1.0]; + [NSGraphicsContext setCurrentContext:nsGraphicsContext]; + image = CGBitmapContextCreateImage(context); + CFRelease(context); + } return image; }