OpenGL/Carbon/Cocoa Memory Management Autorelease issue
- by Stephen Furlani
Hoooboy,
I've got another doozy of a memory problem.
I'm creating a Carbon (AGL) Window, in C++ and it's telling me that I'm autorelease-ing it without a pool in place.
uh... what?
I thought Carbon existed outside of the NSAutoreleasePool...
When I call glEnable(GL_TEXTURE_2D) to do some stuff, it gives me a EXC_BAD_ACCESS warning - but if the AGL Window is never getting release'd, then shouldn't it exist? Setting set objc-non-blocking-mode at (gdb) doesn't make the problem go away.
So I guess my question is WHAT IS UP WITH CARBON/COCOA/NSAutoreleasePool?
And... are there any resources for Objective-C++? Because crap like this keeps happening to me.
Thanks,
-Stephen
--- CODE ---
Test Draw Function
void Channel::frameDraw( const uint32_t frameID)
{
eq::Channel::frameDraw( frameID );
getWindow()->makeCurrent(false);
glEnable(GL_TEXTURE_2D); // Throws Error Here
}
Make Current (Equalizer API from Eyescale)
void Window::makeCurrent( const bool useCache ) const
{
if( useCache && getPipe()->isCurrent( this ))
return;
_osWindow->makeCurrent();
}
void AGLWindow::makeCurrent() const
{
aglSetCurrentContext( _aglContext );
AGLWindowIF::makeCurrent();
if( _aglContext )
{
EQ_GL_ERROR( "After aglSetCurrentContext" );
}
}
_aglContext is a valid memory location (i.e. not NULL) when I step through.
-S!