1

I am facing a weird issue when trying to make a full screen application. I am currently using a a NSWindow with a NSBorderlessWindowMask to make the screen show at top, and I subclassed NSWindow to accept keys:

- (BOOL) canBecomeKeyWindow
{
    return YES;
}

This works fine, and I can use keys in my window, and quit out of the application with Command + Q. However, when I try to force quit the application on my Mac, the screen freezes, and I must restart my computer. I have a simple WebView inside my Window:

mainWindow = [[MyBorderWindow alloc] initWithContentRect:screenRect
                                         styleMask:NSBorderlessWindowMask
                                           backing:NSBackingStoreBuffered
                                             defer:NO screen:[NSScreen mainScreen]];


[mainWindow setLevel:windowLevel];
[mainWindow setBackgroundColor:[NSColor blackColor]];
[mainWindow makeKeyAndOrderFront:nil];
NSView *contentView = [mainWindow contentView];
WebView *customView = [[WebView alloc] initWithFrame:[contentView bounds]];
[customView setTranslatesAutoresizingMaskIntoConstraints:NO];
[contentView addSubview:customView];

I have tried the application on another computer, and force quit does not freeze the screen. Both computers are running OS X Mavericks.

Please let me know if there is anything else I should add.

Thanks in advance,

Bucco

Edit:

I think that my applicationWillTerminate method in AppDelegate might be part of the issue, but am not sure. Why would this method work fine on another computer, but not mine?

- (void)applicationWillTerminate:(NSNotification *)notification
{
    [mainWindow orderOut:self];

    // Release the display(s)
    if (CGDisplayRelease( kCGDirectMainDisplay ) != kCGErrorSuccess) {
        NSLog( @"Couldn't release the display(s)!" );
    }
}
Vineet Kosaraju
  • 5,572
  • 2
  • 19
  • 21
  • 2
    Check the system logs in Console.app. Look for something suspicious at the time you try to Force Quit. Your `-applicationWillTerminate:` method shouldn't be involved in a Force Quit, only a normal quit. – Ken Thomases Dec 16 '13 at 23:50
  • Are you capturing the display (using `CGDisplayCapture`, `CGDisplayCaptureWithOptions`, or `CGCaptureAllDisplays`)? – Peter Hosey Dec 17 '13 at 04:39

0 Answers0