Index: webrtc/modules/video_render/mac/cocoa_full_screen_window.mm |
diff --git a/webrtc/modules/video_render/mac/cocoa_full_screen_window.mm b/webrtc/modules/video_render/mac/cocoa_full_screen_window.mm |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b57223b4dfd0f0c832e213fd7a2342e0ae5b6676 |
--- /dev/null |
+++ b/webrtc/modules/video_render/mac/cocoa_full_screen_window.mm |
@@ -0,0 +1,87 @@ |
+/* |
+ * 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 |