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

Unified Diff: content/browser/compositor/browser_compositor_ca_layer_tree_mac.h

Issue 753933002: MacViews: Move content::AcceleratedWidget to new component, ui/accelerated_widget_mac (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@20141124-MacViews-MoveSoftwareLayerMac-fromcl
Patch Set: gn check Created 6 years, 1 month 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
« no previous file with comments | « content/browser/BUILD.gn ('k') | content/browser/compositor/browser_compositor_ca_layer_tree_mac.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/compositor/browser_compositor_ca_layer_tree_mac.h
diff --git a/content/browser/compositor/browser_compositor_ca_layer_tree_mac.h b/content/browser/compositor/browser_compositor_ca_layer_tree_mac.h
deleted file mode 100644
index 34b5c977f601534cfc899abbb1e6cea6ee0754eb..0000000000000000000000000000000000000000
--- a/content/browser/compositor/browser_compositor_ca_layer_tree_mac.h
+++ /dev/null
@@ -1,159 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CONTENT_BROWSER_COMPOSITOR_ACCELERATED_WIDGET_HELPER_MAC_H_
-#define CONTENT_BROWSER_COMPOSITOR_ACCELERATED_WIDGET_HELPER_MAC_H_
-
-#include <IOSurface/IOSurfaceAPI.h>
-#include <vector>
-
-#include "skia/ext/platform_canvas.h"
-#include "ui/events/latency_info.h"
-#include "ui/gfx/geometry/size.h"
-#include "ui/gfx/native_widget_types.h"
-
-#if defined(__OBJC__)
-#include <Cocoa/Cocoa.h>
-#include "base/mac/scoped_nsobject.h"
-#include "content/browser/compositor/io_surface_layer_mac.h"
-#include "content/browser/compositor/software_layer_mac.h"
-#include "ui/base/cocoa/remote_layer_api.h"
-#endif // __OBJC__
-
-namespace cc {
-class SoftwareFrameData;
-}
-
-namespace content {
-
-class AcceleratedWidgetMac;
-
-// A class through which an AcceleratedWidget may be bound to draw the contents
-// of an NSView. An AcceleratedWidget may be bound to multiple different views
-// throughout its lifetime (one at a time, though).
-class AcceleratedWidgetMacNSView {
- public:
- virtual NSView* AcceleratedWidgetGetNSView() const = 0;
- virtual bool AcceleratedWidgetShouldIgnoreBackpressure() const = 0;
- virtual void AcceleratedWidgetSwapCompleted(
- const std::vector<ui::LatencyInfo>& latency_info) = 0;
- virtual void AcceleratedWidgetHitError() = 0;
-};
-
-#if defined(__OBJC__)
-
-// AcceleratedWidgetMac owns a tree of CALayers. The widget may be passed
-// to a ui::Compositor, which will cause, through its output surface, calls to
-// GotAcceleratedFrame and GotSoftwareFrame. The CALayers may be installed
-// in an NSView by setting the AcceleratedWidgetMacNSView for the helper.
-class AcceleratedWidgetMac : public IOSurfaceLayerClient {
- public:
- AcceleratedWidgetMac();
- virtual ~AcceleratedWidgetMac();
-
- gfx::AcceleratedWidget accelerated_widget() { return native_widget_; }
-
- void SetNSView(AcceleratedWidgetMacNSView* view);
- void ResetNSView();
-
- // Return true if the last frame swapped has a size in DIP of |dip_size|.
- bool HasFrameOfSize(const gfx::Size& dip_size) const;
-
- // Return the CGL renderer ID for the surface, if one is available.
- int GetRendererID() const;
-
- // Return true if the renderer should not be throttled by GPU back-pressure.
- bool IsRendererThrottlingDisabled() const;
-
- // Mark a bracket in which new frames are being pumped in a restricted nested
- // run loop.
- void BeginPumpingFrames();
- void EndPumpingFrames();
-
- void GotAcceleratedFrame(
- uint64 surface_handle,
- const std::vector<ui::LatencyInfo>& latency_info,
- gfx::Size pixel_size,
- float scale_factor,
- const base::Closure& drawn_callback);
-
- void GotSoftwareFrame(
- cc::SoftwareFrameData* frame_data, float scale_factor, SkCanvas* canvas);
-
-private:
- // IOSurfaceLayerClient implementation:
- bool IOSurfaceLayerShouldAckImmediately() const override;
- void IOSurfaceLayerDidDrawFrame() override;
- void IOSurfaceLayerHitError() override;
-
- void GotAcceleratedCAContextFrame(
- CAContextID ca_context_id, gfx::Size pixel_size, float scale_factor);
-
- void GotAcceleratedIOSurfaceFrame(
- IOSurfaceID io_surface_id, gfx::Size pixel_size, float scale_factor);
-
- void AcknowledgeAcceleratedFrame();
-
- // Remove a layer from the heirarchy and destroy it. Because the accelerated
- // layer types may be replaced by a layer of the same type, the layer to
- // destroy is parameterized, and, if it is the current layer, the current
- // layer is reset.
- void DestroyCAContextLayer(
- base::scoped_nsobject<CALayerHost> ca_context_layer);
- void DestroyIOSurfaceLayer(
- base::scoped_nsobject<IOSurfaceLayer> io_surface_layer);
- void DestroySoftwareLayer();
-
- // The AcceleratedWidgetMacNSView that is using this as its internals.
- AcceleratedWidgetMacNSView* view_;
-
- // A phony NSView handle used to identify this.
- gfx::AcceleratedWidget native_widget_;
-
- // A flipped layer, which acts as the parent of the compositing and software
- // layers. This layer is flipped so that the we don't need to recompute the
- // origin for sub-layers when their position changes (this is impossible when
- // using remote layers, as their size change cannot be synchronized with the
- // window). This indirection is needed because flipping hosted layers (like
- // |background_layer_| of RenderWidgetHostViewCocoa) leads to unpredictable
- // behavior.
- base::scoped_nsobject<CALayer> flipped_layer_;
-
- // The accelerated CoreAnimation layer hosted by the GPU process.
- base::scoped_nsobject<CALayerHost> ca_context_layer_;
-
- // The locally drawn accelerated CoreAnimation layer.
- base::scoped_nsobject<IOSurfaceLayer> io_surface_layer_;
-
- // The locally drawn software layer.
- base::scoped_nsobject<SoftwareLayer> software_layer_;
-
- // If an accelerated frame has come in which has not yet been drawn and acked
- // then this is the latency info and the callback to make when the frame is
- // drawn. If there is no such frame then the callback is null.
- std::vector<ui::LatencyInfo> accelerated_latency_info_;
- base::Closure accelerated_frame_drawn_callback_;
-
- // The size in DIP of the last swap received from |compositor_|.
- gfx::Size last_swap_size_dip_;
-
- DISALLOW_COPY_AND_ASSIGN(AcceleratedWidgetMac);
-};
-
-#endif // __OBJC__
-
-void AcceleratedWidgetMacGotAcceleratedFrame(
- gfx::AcceleratedWidget widget, uint64 surface_handle,
- const std::vector<ui::LatencyInfo>& latency_info,
- gfx::Size pixel_size, float scale_factor,
- const base::Closure& drawn_callback,
- bool* disable_throttling, int* renderer_id);
-
-void AcceleratedWidgetMacGotSoftwareFrame(
- gfx::AcceleratedWidget widget,
- cc::SoftwareFrameData* frame_data, float scale_factor, SkCanvas* canvas);
-
-} // namespace content
-
-#endif // CONTENT_BROWSER_COMPOSITOR_ACCELERATED_WIDGET_HELPER_MAC_H_
« no previous file with comments | « content/browser/BUILD.gn ('k') | content/browser/compositor/browser_compositor_ca_layer_tree_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698