#import <AppKit/NSApplication.h>
+#import <Foundation/NSAutoReleasePool.h>
#import <Foundation/NSRunLoop.h>
#include "cocoadisplay.h"
struct _CocoaDisplay
{
NSApplication *app;
+ NSAutoreleasePool *arp;
CFMutableArrayRef event_queue;
};
CocoaDisplay *create_display()
{
CocoaDisplay *display = (CocoaDisplay *)malloc(sizeof(CocoaDisplay));
+ display->arp = [[NSAutoreleasePool alloc] init];
display->app = [NSApplication sharedApplication];
- // Since OS X 10.6
- //[display->app setActivationPolicy:NSApplicationActivationPolicyRegular];
+ // This makes windows appear when run from terminal
+ if([display->app respondsToSelector:@selector(setActivationPolicy:)])
+ [display->app setActivationPolicy:NSApplicationActivationPolicyRegular];
[display->app finishLaunching];
CFArrayCallBacks callbacks;
void destroy_display(CocoaDisplay *display)
{
CFRelease(display->event_queue);
+ [display->arp release];
free(display);
}
NSEvent *event = [display->app nextEventMatchingMask:NSAnyEventMask untilDate:nil inMode:NSDefaultRunLoopMode dequeue:YES];
if(event)
{
+ [event retain];
[display->app sendEvent:event];
convert_event(event, buf);
+ [event release];
return true;
}