| 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
|
|
|