Re: CIImage (TIFFRepresentation) memory leak
Re: CIImage (TIFFRepresentation) memory leak
- Subject: Re: CIImage (TIFFRepresentation) memory leak
- From: "Gary L. Wade" <email@hidden>
- Date: Mon, 10 Mar 2008 16:21:54 -0400
If all the code you're using is present, it looks to me like you're not releasing the object pointed at by image; the object returned by imageWithData is not an auto-released object.
>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
_______________________________________________
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