moves AcceleratedWidgetMacNSView to NativeWindowMac

This commit is contained in:
gellert 2016-08-05 12:29:35 +02:00
parent 3be68ba136
commit 795753286b
4 changed files with 27 additions and 48 deletions

View file

@ -12,6 +12,7 @@
#include "base/mac/scoped_nsobject.h" #include "base/mac/scoped_nsobject.h"
#include "atom/browser/native_window.h" #include "atom/browser/native_window.h"
#include "ui/accelerated_widget_mac/accelerated_widget_mac.h"
@class AtomNSWindow; @class AtomNSWindow;
@class AtomNSWindowDelegate; @class AtomNSWindowDelegate;
@ -19,7 +20,9 @@
namespace atom { namespace atom {
class NativeWindowMac : public NativeWindow { class NativeWindowMac
: public NativeWindow,
public ui::AcceleratedWidgetMacNSView {
public: public:
NativeWindowMac(brightray::InspectableWebContents* inspectable_web_contents, NativeWindowMac(brightray::InspectableWebContents* inspectable_web_contents,
const mate::Dictionary& options, const mate::Dictionary& options,
@ -90,6 +93,12 @@ class NativeWindowMac : public NativeWindow {
void SetVisibleOnAllWorkspaces(bool visible) override; void SetVisibleOnAllWorkspaces(bool visible) override;
bool IsVisibleOnAllWorkspaces() override; bool IsVisibleOnAllWorkspaces() override;
// ui::AcceleratedWidgetMacNSView:
NSView* AcceleratedWidgetGetNSView() const override;
void AcceleratedWidgetGetVSyncParameters(
base::TimeTicks* timebase, base::TimeDelta* interval) const override;
void AcceleratedWidgetSwapCompleted() override;
// Refresh the DraggableRegion views. // Refresh the DraggableRegion views.
void UpdateDraggableRegionViews() { void UpdateDraggableRegionViews() {
UpdateDraggableRegionViews(draggable_regions_); UpdateDraggableRegionViews(draggable_regions_);

View file

@ -1197,6 +1197,19 @@ void NativeWindowMac::SetCollectionBehavior(bool on, NSUInteger flag) {
SetMaximizable(was_maximizable); SetMaximizable(was_maximizable);
} }
NSView* atom::NativeWindowMac::AcceleratedWidgetGetNSView() const {
return [window_ contentView];
}
void atom::NativeWindowMac::AcceleratedWidgetGetVSyncParameters(
base::TimeTicks* timebase, base::TimeDelta* interval) const {
*timebase = base::TimeTicks();
*interval = base::TimeDelta();
}
void atom::NativeWindowMac::AcceleratedWidgetSwapCompleted() {
}
// static // static
NativeWindow* NativeWindow::Create( NativeWindow* NativeWindow::Create(
brightray::InspectableWebContents* inspectable_web_contents, brightray::InspectableWebContents* inspectable_web_contents,

View file

@ -56,9 +56,6 @@ class AtomBeginFrameTimer;
class OffScreenRenderWidgetHostView class OffScreenRenderWidgetHostView
: public content::RenderWidgetHostViewBase, : public content::RenderWidgetHostViewBase,
#if defined(OS_MACOSX)
public ui::AcceleratedWidgetMacNSView,
#endif
public ui::CompositorDelegate, public ui::CompositorDelegate,
public content::DelegatedFrameHostClient { public content::DelegatedFrameHostClient {
public: public:
@ -173,14 +170,6 @@ class OffScreenRenderWidgetHostView
bool IsAutoResizeEnabled() const; bool IsAutoResizeEnabled() const;
void OnSetNeedsBeginFrames(bool enabled); void OnSetNeedsBeginFrames(bool enabled);
#if defined(OS_MACOSX)
// ui::AcceleratedWidgetMacNSView:
NSView* AcceleratedWidgetGetNSView() const override;
void AcceleratedWidgetGetVSyncParameters(
base::TimeTicks* timebase, base::TimeDelta* interval) const override;
void AcceleratedWidgetSwapCompleted() override;
#endif // defined(OS_MACOSX)
void OnBeginFrameTimerTick(); void OnBeginFrameTimerTick();
void SendBeginFrame(base::TimeTicks frame_time, void SendBeginFrame(base::TimeTicks frame_time,
base::TimeDelta vsync_period); base::TimeDelta vsync_period);
@ -233,8 +222,6 @@ class OffScreenRenderWidgetHostView
std::unique_ptr<AtomBeginFrameTimer> begin_frame_timer_; std::unique_ptr<AtomBeginFrameTimer> begin_frame_timer_;
#if defined(OS_MACOSX) #if defined(OS_MACOSX)
NSWindow* window_;
CALayer* background_layer_;
std::unique_ptr<content::BrowserCompositorMac> browser_compositor_; std::unique_ptr<content::BrowserCompositorMac> browser_compositor_;
// Selected text on the renderer. // Selected text on the renderer.

View file

@ -6,8 +6,9 @@
#import <Cocoa/Cocoa.h> #import <Cocoa/Cocoa.h>
#include "atom/browser/native_window_mac.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,20 +17,6 @@ atom::OffScreenRenderWidgetHostView::GetAcceleratedWidgetMac() const {
return nullptr; return nullptr;
} }
NSView* atom::OffScreenRenderWidgetHostView::AcceleratedWidgetGetNSView()
const {
return [window_ contentView];
}
void atom::OffScreenRenderWidgetHostView::AcceleratedWidgetGetVSyncParameters(
base::TimeTicks* timebase, base::TimeDelta* interval) const {
*timebase = base::TimeTicks();
*interval = base::TimeDelta();
}
void atom::OffScreenRenderWidgetHostView::AcceleratedWidgetSwapCompleted() {
}
void atom::OffScreenRenderWidgetHostView::SetActive(bool active) { void atom::OffScreenRenderWidgetHostView::SetActive(bool active) {
} }
@ -72,22 +59,12 @@ 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());
compositor_->SetRootLayer(root_layer_.get()); compositor_->SetRootLayer(root_layer_.get());
browser_compositor_->accelerated_widget_mac()->SetNSView(this); browser_compositor_->accelerated_widget_mac()->SetNSView(
static_cast<atom::NativeWindowMac*>(native_window_));
browser_compositor_->compositor()->SetVisible(true); browser_compositor_->compositor()->SetVisible(true);
compositor_->SetLocksWillTimeOut(true); compositor_->SetLocksWillTimeOut(true);
@ -95,16 +72,9 @@ 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));