moves AcceleratedWidgetMacNSView to NativeWindowMac
This commit is contained in:
parent
3be68ba136
commit
795753286b
4 changed files with 27 additions and 48 deletions
|
@ -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_);
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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));
|
||||||
|
|
Loading…
Reference in a new issue