Hi,

I have a very annoying crash/hang on snow leopard 10A432 when converting CIImage to NSImage.
Here is the stack :

#0      0x7fff88588994 in fe_tree_node_simplify
#1      0x7fff885879f4 in fe_tree_refactor_transforms_
#2      0x7fff8858857e in fe_tree_refactor_transforms_
#3      0x7fff885885a3 in fe_tree_refactor_transforms_
#4      0x7fff8858857e in fe_tree_refactor_transforms_
#5      0x7fff885885a3 in fe_tree_refactor_transforms_
#6      0x7fff8858857e in fe_tree_refactor_transforms_
#7      0x7fff88587986 in fe_tree_refactor_transforms
#8      0x7fff885870d9 in fe_tree_prepare_tree_
#9      0x7fff885852ca in fe_tree_render_image
#10     0x7fff88584cab in fe_image_render_
#11     0x7fff885e270b in fe_image_render
#12 0x7fff885e122e in -[CIOpenGLContextImpl renderWithBounds:matrix:function:info:]
#13     0x7fff885e1118 in -[CIContextImpl render:]
#14     0x7fff883d56b2 in cgxcoreimage_instance_render
#15     0x7fff86f49395 in CGXCoreImageInstanceRender
#16     0x7fff835ef27a in ripc_AcquireCoreImage
#17     0x7fff835e4490 in ripc_DrawShading
#18     0x7fff86e61439 in CGContextDrawShading
#19     0x7fff885de687 in -[CICGContextImpl render:]
#20     0x7fff885de25f in -[CIContext drawImage:inRect:fromRect:]
#21     0x7fff88622013 in -[CIContext drawImage:atPoint:fromRect:]
#22 0x100035cce in -[CIImage(IMImagesUtilities) nsImageWithSize:] at IMImagesUtilities.m:643


Is anyone familiar with this issue?

Best Regards.

Romain

The method I use to convert a CIImage to an NSImage :

@implementation CIImage (IMImagesUtilities)

- (NSImage *)nsImageWithSize:(NSSize)size {
if (([self extent].size.width == 0) || ([self extent].size.height == 0))
        {
                return nil;
        }
        
        CIImage                         * imageToAdd;
        //NSCIImageRep          * ciImageRep;
        NSImage                         * resultingImage;
        NSRect                          newRect;
        
        if (CGRectIsInfinite([self extent]))
        {
                newRect = NSMakeRect(0, 0, size.width, size.height);
                imageToAdd = [IMImagesUtilities cropImage:self
                                                                                
 withRect:newRect];
        }
        else
        {
                newRect = [IMImagesUtilities NSRectWithCGRect:[self extent]];
                newRect = NSMakeRect(0, 0, newRect.size.width, 
newRect.size.height);
                imageToAdd = self;
        }
        
        // Create a new NSBitmapImageRep.
NSBitmapImageRep * theBitMapToBeSaved = [[NSBitmapImageRep alloc] initWithBitmapDataPlanes:NULL
                                                                                
                                                                                
        pixelsWide:newRect.size.width
                                                                                
                                                                                
        pixelsHigh:newRect.size.height
                                                                                
                                                                                
 bitsPerSample:8
                                                                                
                                                                           
samplesPerPixel:4
                                                                                
                                                                                
          hasAlpha:YES
                                                                                
                                                                                
          isPlanar:NO
                                                                                
                                                                                
colorSpaceName:NSDeviceRGBColorSpace
                                                                                
        
                                                                                
                                                                                
   bytesPerRow:0
                                                                                
                                                                                
  bitsPerPixel:0];
        
// Create an NSGraphicsContext that draws into the NSBitmapImageRep. (This capability is new in Tiger.)
        NSGraphicsContext *nsContext = [NSGraphicsContext
                                                                        
graphicsContextWithBitmapImageRep:theBitMapToBeSaved];
        
// Save the previous graphics context and state, and make our bitmap context current.
        [NSGraphicsContext saveGraphicsState];
        [NSGraphicsContext setCurrentContext: nsContext];
        
// Get a CIContext from the NSGraphicsContext, and use it to draw the CIImage into the NSBitmapImageRep.
        [[nsContext CIContext] drawImage:imageToAdd
                                                         atPoint:CGPointZero
                                                        fromRect:[imageToAdd 
extent]];
        
        // Restore the previous graphics context and state.
        [NSGraphicsContext restoreGraphicsState];
        
        
        resultingImage = [[NSImage alloc] initWithSize:newRect.size];
        
        [resultingImage addRepresentation:theBitMapToBeSaved];
        
        [theBitMapToBeSaved release];
        
        return [resultingImage autorelease];
}
@end



Best Regards.

Romain Piveteau
Author of LiveQuartz, "Free photo reTOUCHing for Leopard".
Paris, France

[email protected]
http://www.livequartz.com



_______________________________________________

Cocoa-dev mailing list ([email protected])

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to