Edit

kc3-lang/SDL/test/testnativecocoa.m

Branch :

  • Show log

    Commit

  • Author : Gabriel Jacobo
    Date : 2013-08-12 11:13:50
    Hash : dad42067
    Message : Fixes #2022, do not resume on Android when surfaceChanged If the app is in landscape mode and the user presses the power button, a pause is followed immediately by a surfaceChanged event because the lock screen is shown in portrait mode. This triggers a "false" resume. So, we just pause and resume following the onWindowFocusChanged events. Also, wait for SDL_APP_WILLENTERBACKGROUND and SDL_APP_DIDENTERBACKGROUND before blocking the event pump.

  • 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