Re: Leak while in Midi thread
Re: Leak while in Midi thread
- Subject: Re: Leak while in Midi thread
- From: Philippe Wicker <email@hidden>
- Date: Fri, 10 Jan 2003 17:05:05 +0100
On Friday, January 10, 2003, at 09:58 AM, Steve wrote:
>
Hi,
>
>
I have a method to display incoming notes on a Keyboard graphic which
>
includes:
>
>
NSColor *myColor;
>
myColor = [NSColor colorWithCalibratedRed:0.25 green:0.95 blue:0.25
>
alpha:1.0];
>
>
When this is called programmatically, there is no problem, and the
>
NSColor is (I guess) being correctly auotreleased at some point.
>
(...next time round the event loop?).
>
>
However the same method can also be called from my Midi readProc.
>
When this happens, I get the following error log:
>
>
>2003-01-10 08:32:20.442 ChordCompleteDebug[788] ***
>
_NSAutoreleaseNoPool(): Object 0x19c52d0 of class
>
>NSCalibratedRGBColor autoreleased with no pool in place - just > leaking
>
>
I'm guessing that it's caused by the new Midi thread, and confusion
>
over which thread should release it?
>
>
Does anyone know either how to fix this, or at least have some clues
>
on how to track the problem down further?
>
>
Thanks
>
>
Steve
>
Hello Steve,
When you are calling Cocoa code from the MIDIReadProc, then you are at
some point in a C runtime environment, and you should wrap any call to
Cocoa method in so called C-Callable wrapper functions (have a look to
"Inside Mac OS X: Integrating Carbon and Cocoa in Your Application",
page 13).
OSStatus YourWrapper ( your C parameters )
{
NSAutoreleasePool *localPool;
localPool = [[NSAutoreleasePool alloc] init];
-> your message to the Cocoa object
[localPool release];
return noErr;
}
When doing this, you should be aware that the MIDI thread may be
blocked for an undefined amount of time if the calls to
[NSAutoreleasePool alloc] and [localPool release] actually falls into
low level memory allocation routines (like C malloc and free) which
are potentially blocking calls.
Regards.
Philippe Wicker
email@hidden
_______________________________________________
coreaudio-api mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/coreaudio-api
Do not post admin requests to the list. They will be ignored.