ref: 35bf490f0d0b5b1ca5000aaa0ea1ccfd05f17926
dir: /external/SDL2/test/testnativecocoa.m/
#include "testnative.h"
#ifdef TEST_NATIVE_COCOA
#include <Cocoa/Cocoa.h>
static void *CreateWindowCocoa(int w, int h);
static void DestroyWindowCocoa(void *window);
NativeWindowFactory CocoaWindowFactory = {
    "cocoa",
    CreateWindowCocoa,
    DestroyWindowCocoa
};
static void *CreateWindowCocoa(int w, int h)
{
    NSAutoreleasePool *pool;
    NSWindow *nswindow;
    NSRect rect;
    unsigned int style;
    pool = [[NSAutoreleasePool alloc] init];
    rect.origin.x = 0;
    rect.origin.y = 0;
    rect.size.width = w;
    rect.size.height = h;
    rect.origin.y = CGDisplayPixelsHigh(kCGDirectMainDisplay) - rect.origin.y - rect.size.height;
    style = (NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask);
    nswindow = [[NSWindow alloc] initWithContentRect:rect styleMask:style backing:NSBackingStoreBuffered defer:FALSE];
    [nswindow makeKeyAndOrderFront:nil];
    [pool release];
    return nswindow;
}
static void DestroyWindowCocoa(void *window)
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSWindow *nswindow = (NSWindow *)window;
    [nswindow close];
    [pool release];
}
#endif