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:58:43 +0100
Oh really? Hm... *looks away in shame*. That makes me feel kind of
stupid. I was under the impression it was an autoreleased object as
there is no "init", "copy" or "new" in it's name, and the docs don't
mention anything about the user being responsible for releasing it.
How are you supposed to know this?
Anyway, releasing the object seems to get rid of the leak, but after
releasing it I cannot get the view to update it's content. I set a new
image in the view, I can see the drawRect method is being called, the
new CIImage is being created, but it's not being drawn, the view just
keeps showing the first image... :-/
What am I missing?
On Mon, Mar 10, 2008 at 9:21 PM, Gary L. Wade
<email@hidden> wrote:
> 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
>
_______________________________________________
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