| OLD | NEW |
| (Empty) |
| 1 /* | |
| 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | |
| 3 * | |
| 4 * Use of this source code is governed by a BSD-style license | |
| 5 * that can be found in the LICENSE file in the root of the source | |
| 6 * tree. An additional intellectual property rights grant can be found | |
| 7 * in the file PATENTS. All contributing project authors may | |
| 8 * be found in the AUTHORS file in the root of the source tree. | |
| 9 */ | |
| 10 | |
| 11 #include "webrtc/modules/video_render/mac/cocoa_full_screen_window.h" | |
| 12 #include "webrtc/system_wrappers/include/trace.h" | |
| 13 | |
| 14 using namespace webrtc; | |
| 15 | |
| 16 @implementation CocoaFullScreenWindow | |
| 17 | |
| 18 -(id)init{ | |
| 19 | |
| 20 self = [super init]; | |
| 21 if(!self){ | |
| 22 WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, 0, "%s:%d COULD N
OT CREATE INSTANCE", __FUNCTION__, __LINE__); | |
| 23 return nil; | |
| 24 } | |
| 25 | |
| 26 | |
| 27 WEBRTC_TRACE(kTraceInfo, kTraceVideoRenderer, 0, "%s:%d Created instance
", __FUNCTION__, __LINE__); | |
| 28 return self; | |
| 29 } | |
| 30 | |
| 31 -(void)grabFullScreen{ | |
| 32 | |
| 33 #ifdef GRAB_ALL_SCREENS | |
| 34 if(CGCaptureAllDisplays() != kCGErrorSuccess) | |
| 35 #else | |
| 36 if(CGDisplayCapture(kCGDirectMainDisplay) != kCGErrorSuccess) | |
| 37 #endif | |
| 38 { | |
| 39 WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, 0, "%s:%d Could n
ot capture main level", __FUNCTION__, __LINE__); | |
| 40 } | |
| 41 | |
| 42 // get the shielding window level | |
| 43 int windowLevel = CGShieldingWindowLevel(); | |
| 44 | |
| 45 // get the screen rect of main display | |
| 46 NSRect screenRect = [[NSScreen mainScreen]frame]; | |
| 47 | |
| 48 _window = [[NSWindow alloc]initWithContentRect:screenRect | |
| 49
styleMask:NSBorderlessWindowMask | |
| 50
backing:NSBackingStoreBuffered | |
| 51
defer:NO | |
| 52
screen:[NSScreen mainScreen]]; | |
| 53 | |
| 54 [_window setLevel:windowLevel]; | |
| 55 [_window setBackgroundColor:[NSColor blackColor]]; | |
| 56 [_window makeKeyAndOrderFront:nil]; | |
| 57 | |
| 58 } | |
| 59 | |
| 60 -(void)releaseFullScreen | |
| 61 { | |
| 62 [_window orderOut:self]; | |
| 63 | |
| 64 #ifdef GRAB_ALL_SCREENS | |
| 65 if(CGReleaseAllDisplays() != kCGErrorSuccess) | |
| 66 #else | |
| 67 if(CGDisplayRelease(kCGDirectMainDisplay) != kCGErrorSuccess) | |
| 68 #endif | |
| 69 { | |
| 70 WEBRTC_TRACE(kTraceError, kTraceVideoRenderer, 0, "%s:%d Could n
ot release the displays", __FUNCTION__, __LINE__); | |
| 71 } | |
| 72 } | |
| 73 | |
| 74 - (NSWindow*)window | |
| 75 { | |
| 76 return _window; | |
| 77 } | |
| 78 | |
| 79 - (void) dealloc | |
| 80 { | |
| 81 [self releaseFullScreen]; | |
| 82 [super dealloc]; | |
| 83 } | |
| 84 | |
| 85 | |
| 86 | |
| 87 @end | |
| OLD | NEW |