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 |