Fixed lifetime management of application delegate.
This commit is contained in:
parent
d459145d28
commit
1634742177
@ -228,11 +228,11 @@ void _glfwPlatformTerminate(void)
|
||||
_glfw.ns.eventSource = NULL;
|
||||
}
|
||||
|
||||
id delegate = [NSApp delegate];
|
||||
if (delegate)
|
||||
if (_glfw.ns.delegate)
|
||||
{
|
||||
[delegate release];
|
||||
[NSApp setDelegate:nil];
|
||||
[_glfw.ns.delegate release];
|
||||
_glfw.ns.delegate = nil;
|
||||
}
|
||||
|
||||
[_glfw.ns.autoreleasePool release];
|
||||
|
@ -76,6 +76,7 @@ typedef struct _GLFWwindowNS
|
||||
typedef struct _GLFWlibraryNS
|
||||
{
|
||||
CGEventSourceRef eventSource;
|
||||
id delegate;
|
||||
id autoreleasePool;
|
||||
id cursor;
|
||||
|
||||
|
@ -794,15 +794,15 @@ static GLboolean initializeAppKit(void)
|
||||
|
||||
// There can only be one application delegate, but we allocate it the
|
||||
// first time a window is created to keep all window code in this file
|
||||
id delegate = [[GLFWApplicationDelegate alloc] init];
|
||||
if (delegate == nil)
|
||||
_glfw.ns.delegate = [[GLFWApplicationDelegate alloc] init];
|
||||
if (_glfw.ns.delegate == nil)
|
||||
{
|
||||
_glfwInputError(GLFW_PLATFORM_ERROR,
|
||||
"Cocoa: Failed to create application delegate");
|
||||
return GL_FALSE;
|
||||
}
|
||||
|
||||
[NSApp setDelegate:delegate];
|
||||
[NSApp setDelegate:_glfw.ns.delegate];
|
||||
[NSApp run];
|
||||
|
||||
return GL_TRUE;
|
||||
|
Loading…
Reference in New Issue
Block a user