Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(81)

Unified Diff: content/browser/renderer_host/render_widget_host_view_mac.h

Issue 294023012: Use a separate NSView to draw browser composited content (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comments, clean-u Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/render_widget_host_view_mac.h
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.h b/content/browser/renderer_host/render_widget_host_view_mac.h
index c8fa95c59d871bffb382ee24d42e68165daff75c..6dd7d6660df08725b22b8465e9c18d929e68b091 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac.h
+++ b/content/browser/renderer_host/render_widget_host_view_mac.h
@@ -17,6 +17,7 @@
#include "base/memory/weak_ptr.h"
#include "base/time/time.h"
#include "content/browser/compositor/delegated_frame_host.h"
+#include "content/browser/renderer_host/compositing_iosurface_layer_mac.h"
#include "content/browser/renderer_host/display_link_mac.h"
#include "content/browser/renderer_host/render_widget_host_view_base.h"
#include "content/browser/renderer_host/software_frame_manager.h"
@@ -41,9 +42,11 @@ class Compositor;
class Layer;
}
+@class BrowserCompositorViewMac;
@class CompositingIOSurfaceLayer;
@class FullscreenWindowManager;
@protocol RenderWidgetHostViewMacDelegate;
+@class SoftwareLayer;
@class ToolTip;
@protocol RenderWidgetHostViewMacOwner
@@ -186,20 +189,6 @@ class Layer;
actualRange:(NSRangePointer)actualRange;
@end
-@interface SoftwareLayer : CALayer
-
-- (id)init;
-
-- (void)setContentsToData:(const void *)data
- withRowBytes:(size_t)rowBytes
- withPixelSize:(gfx::Size)pixelSize
- withScaleFactor:(float)scaleFactor;
-
-// Remove the layer from the layer hierarchy.
-- (void)disableRendering;
-
-@end
-
namespace content {
class RenderWidgetHostImpl;
@@ -223,7 +212,8 @@ class CONTENT_EXPORT RenderWidgetHostViewMac
: public RenderWidgetHostViewBase,
public DelegatedFrameHostClient,
public IPC::Sender,
- public SoftwareFrameManagerClient {
+ public SoftwareFrameManagerClient,
+ public CompositingIOSurfaceLayerClient {
public:
// The view will associate itself with the given widget. The native view must
// be hooked up immediately to the view hierarchy, or else when it is
@@ -353,6 +343,10 @@ class CONTENT_EXPORT RenderWidgetHostViewMac
virtual SkBitmap::Config PreferredReadbackFormat() OVERRIDE;
+ // CompositingIOSurfaceLayerClient implementation.
+ virtual void AcceleratedLayerDidDrawFrame(bool succeeded) OVERRIDE;
+ virtual bool AcceleratedLayerHasNotAckedPendingFrame() const OVERRIDE;
+
// Forwards the mouse event to the renderer.
void ForwardMouseEvent(const blink::WebMouseEvent& event);
@@ -372,10 +366,6 @@ class CONTENT_EXPORT RenderWidgetHostViewMac
float scale_factor,
const std::vector<ui::LatencyInfo>& latency_info);
- void GotBrowserCompositorSoftwareFrame(cc::SoftwareFrameData* frame_data,
- float scale_factor,
- SkCanvas* canvas);
-
// Draw the IOSurface by making its context current to this view.
void DrawIOSurfaceWithoutCoreAnimation();
@@ -451,17 +441,12 @@ class CONTENT_EXPORT RenderWidgetHostViewMac
// Accelerated compositing structures. These may be dynamically created and
// destroyed together in Create/DestroyCompositedIOSurfaceAndLayer.
base::scoped_nsobject<CompositingIOSurfaceLayer> compositing_iosurface_layer_;
- scoped_ptr<CompositingIOSurfaceMac> compositing_iosurface_;
+ scoped_refptr<CompositingIOSurfaceMac> compositing_iosurface_;
scoped_refptr<CompositingIOSurfaceContext> compositing_iosurface_context_;
- // Timer used to dynamically transition the compositing layer in and out of
- // asynchronous mode.
- base::DelayTimer<RenderWidgetHostViewMac>
- compositing_iosurface_layer_async_timer_;
-
// Delegated frame management and compositior.
+ base::scoped_nsobject<BrowserCompositorViewMac> browser_compositor_view_;
scoped_ptr<DelegatedFrameHost> delegated_frame_host_;
- scoped_ptr<ui::Compositor> compositor_;
scoped_ptr<ui::Layer> root_layer_;
// This holds the current software compositing framebuffer, if any.
@@ -528,8 +513,6 @@ class CONTENT_EXPORT RenderWidgetHostViewMac
// update the scale factor of the layers.
void LayoutLayers();
- bool HasPendingSwapAck() const { return pending_swap_ack_; }
-
// DelegatedFrameHostClient implementation.
virtual ui::Compositor* GetCompositor() const OVERRIDE;
virtual ui::Layer* GetLayer() OVERRIDE;
@@ -595,10 +578,6 @@ class CONTENT_EXPORT RenderWidgetHostViewMac
// Called when a software DIB is received.
void GotSoftwareFrame();
- // Called if it has been a quarter-second since a GPU SwapBuffers has been
- // received. In this case, switch from polling for frames to pushing them.
- void TimerSinceGotAcceleratedFrameFired();
-
// IPC message handlers.
void OnPluginFocusChanged(bool focused, int plugin_id);
void OnStartPluginIme();

Powered by Google App Engine
This is Rietveld 408576698