Merge pull request #6741 from MaxWhere/native-window-widget-mac

Offscreen rendering fixes for macOS
This commit is contained in:
Cheng Zhao 2016-08-08 16:10:30 +09:00 committed by GitHub
commit b6becdeae7
2 changed files with 3 additions and 24 deletions

View file

@ -177,7 +177,7 @@ class OffScreenRenderWidgetHostView
// ui::AcceleratedWidgetMacNSView: // ui::AcceleratedWidgetMacNSView:
NSView* AcceleratedWidgetGetNSView() const override; NSView* AcceleratedWidgetGetNSView() const override;
void AcceleratedWidgetGetVSyncParameters( void AcceleratedWidgetGetVSyncParameters(
base::TimeTicks* timebase, base::TimeDelta* interval) const override; base::TimeTicks* timebase, base::TimeDelta* interval) const override;
void AcceleratedWidgetSwapCompleted() override; void AcceleratedWidgetSwapCompleted() override;
#endif // defined(OS_MACOSX) #endif // defined(OS_MACOSX)

View file

@ -7,7 +7,6 @@
#import <Cocoa/Cocoa.h> #import <Cocoa/Cocoa.h>
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "ui/accelerated_widget_mac/accelerated_widget_mac.h"
ui::AcceleratedWidgetMac* ui::AcceleratedWidgetMac*
atom::OffScreenRenderWidgetHostView::GetAcceleratedWidgetMac() const { atom::OffScreenRenderWidgetHostView::GetAcceleratedWidgetMac() const {
@ -16,9 +15,8 @@ atom::OffScreenRenderWidgetHostView::GetAcceleratedWidgetMac() const {
return nullptr; return nullptr;
} }
NSView* atom::OffScreenRenderWidgetHostView::AcceleratedWidgetGetNSView() NSView* atom::OffScreenRenderWidgetHostView::AcceleratedWidgetGetNSView() const {
const { return [native_window_->GetNativeWindow() contentView];
return [window_ contentView];
} }
void atom::OffScreenRenderWidgetHostView::AcceleratedWidgetGetVSyncParameters( void atom::OffScreenRenderWidgetHostView::AcceleratedWidgetGetVSyncParameters(
@ -72,17 +70,6 @@ void atom::OffScreenRenderWidgetHostView::SelectionChanged(
} }
void atom::OffScreenRenderWidgetHostView::CreatePlatformWidget() { void atom::OffScreenRenderWidgetHostView::CreatePlatformWidget() {
window_ = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 1, 1)
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO];
background_layer_ = [[[CALayer alloc] init] retain];
[background_layer_ setBackgroundColor:CGColorGetConstantColor(kCGColorClear)];
NSView* content_view = [window_ contentView];
[content_view setLayer:background_layer_];
[content_view setWantsLayer:YES];
browser_compositor_ = content::BrowserCompositorMac::Create(); browser_compositor_ = content::BrowserCompositorMac::Create();
compositor_.reset(browser_compositor_->compositor()); compositor_.reset(browser_compositor_->compositor());
@ -95,19 +82,11 @@ void atom::OffScreenRenderWidgetHostView::CreatePlatformWidget() {
} }
void atom::OffScreenRenderWidgetHostView::DestroyPlatformWidget() { void atom::OffScreenRenderWidgetHostView::DestroyPlatformWidget() {
DCHECK(window_);
ui::Compositor* compositor = compositor_.release(); ui::Compositor* compositor = compositor_.release();
ALLOW_UNUSED_LOCAL(compositor); ALLOW_UNUSED_LOCAL(compositor);
[window_ close];
window_ = nil;
[background_layer_ release];
background_layer_ = nil;
browser_compositor_->accelerated_widget_mac()->ResetNSView(); browser_compositor_->accelerated_widget_mac()->ResetNSView();
browser_compositor_->compositor()->SetVisible(false); browser_compositor_->compositor()->SetVisible(false);
browser_compositor_->compositor()->SetScaleAndSize(1.0, gfx::Size(0, 0)); browser_compositor_->compositor()->SetScaleAndSize(1.0, gfx::Size(0, 0));
browser_compositor_->compositor()->SetRootLayer(NULL); browser_compositor_->compositor()->SetRootLayer(NULL);
content::BrowserCompositorMac::Recycle(std::move(browser_compositor_));
} }