/* * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #include "webrtc/modules/video_render/mac/cocoa_full_screen_window.h" #include "webrtc/system_wrappers/include/trace.h" using namespace webrtc; @implementation CocoaFullScreenWindow -(id)init{ self = [super init]; if(!self){ WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, 0, "%s:%d COULD NOT CREATE INSTANCE", __FUNCTION__, __LINE__); return nil; } WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, 0, "%s:%d Created instance", __FUNCTION__, __LINE__); return self; } -(void)grabFullScreen{ #ifdef GRAB_ALL_SCREENS if(CGCaptureAllDisplays() != kCGErrorSuccess) #else if(CGDisplayCapture(kCGDirectMainDisplay) != kCGErrorSuccess) #endif { WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, 0, "%s:%d Could not capture main level", __FUNCTION__, __LINE__); } // get the shielding window level int windowLevel = CGShieldingWindowLevel(); // get the screen rect of main display NSRect screenRect = [[NSScreen mainScreen]frame]; _window = [[NSWindow alloc]initWithContentRect:screenRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO screen:[NSScreen mainScreen]]; [_window setLevel:windowLevel]; [_window setBackgroundColor:[NSColor blackColor]]; [_window makeKeyAndOrderFront:nil]; } -(void)releaseFullScreen { [_window orderOut:self]; #ifdef GRAB_ALL_SCREENS if(CGReleaseAllDisplays() != kCGErrorSuccess) #else if(CGDisplayRelease(kCGDirectMainDisplay) != kCGErrorSuccess) #endif { WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, 0, "%s:%d Could not release the displays", __FUNCTION__, __LINE__); } } - (NSWindow*)window { return _window; } - (void) dealloc { [self releaseFullScreen]; [super dealloc]; } @end