Fixed lifetime management of application delegate.

master
Camilla Berglund ago%!(EXTRA string=11 years)
parent d459145d28
commit 1634742177
  1. 6
      src/cocoa_init.m
  2. 1
      src/cocoa_platform.h
  3. 6
      src/cocoa_window.m

@ -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…
Cancel
Save