Re: CIImage (TIFFRepresentation) memory leak
Re: CIImage (TIFFRepresentation) memory leak
- Subject: Re: CIImage (TIFFRepresentation) memory leak
- From: email@hidden
- Date: Mon, 10 Mar 2008 21:03:19 +0100
I narrowed this down by removing the filters, and the leak is still
there. And what a leak! Everytime I draw the view the memory usage
increases with the size of the drawn image. Yet this exact same code
is used in the Core Image Programming Guide. So I figure it's a bug in
Core Image. But how can I avoid it?
- (void) drawRect:(NSRect)rect
{
CIImage *image = [CIImage imageWithData:[[self image]
TIFFRepresentation]];
if (image !=nil) {
CGRect cg;
CIContext *context = [[NSGraphicsContext
currentContext] CIContext];
cg = CGRectMake(NSMinX(rect), NSMinY(rect),
NSWidth(rect), NSHeight(rect));
[context drawImage:image
atPoint:cg.origin
fromRect:cg];
}
}
On Mon, Mar 10, 2008 at 5:33 PM, <email@hidden> wrote:
> Hi,
>
> I'm applying a Core Image filter to an image in a NSImageView
> subclass. The drawing works fine, except it leaks memory, not sure
> why. This is my drawRect method. Anything wrong with it? Thanks.
>
>
> - (void) drawRect:(NSRect)rect
> {
>
> [[self image] setFlipped:YES];
> CIImage *image = [CIImage imageWithData:[[self image] TIFFRepresentation]];
> if (image !=nil) {
> CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];
> [filter setDefaults];
> [filter setValue: image forKey: @"inputImage"];
> [filter setValue: [NSNumber numberWithFloat:0.7] forKey: @"inputRadius"];
> image = [filter valueForKey: @"outputImage"];
>
> filter = [CIFilter filterWithName:@"CIPerspectiveTransform"];
> [filter setDefaults];
> [filter setValue: image forKey: @"inputImage"];
> [filter setValue:[CIVector vectorWithX:NSMinX(rect) Y:NSMinY(rect) +
> bLeft ] forKey:@"inputBottomLeft"];
> [filter setValue:[CIVector vectorWithX:NSMaxX(rect) Y:NSMinY(rect) +
> bRight ] forKey:@"inputBottomRight"];
> [filter setValue:[CIVector vectorWithX:NSMinX(rect) Y:NSMaxY(rect) +
> tLeft ] forKey:@"inputTopLeft"];
> [filter setValue:[CIVector vectorWithX:NSMaxX(rect) Y:NSMaxY(rect) +
> tRight ] forKey:@"inputTopRight"];
> image = [filter valueForKey: @"outputImage"];
>
> CGRect cg;
> CIContext *context = [[NSGraphicsContext currentContext] CIContext];
> cg = CGRectMake(NSMinX(rect), NSMinY(rect), NSWidth(rect), NSHeight(rect));
> [context drawImage:image
> atPoint:cg.origin
> fromRect:cg];
>
> }
> }
>
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden