| Index: components/exo/surface.h
|
| diff --git a/components/exo/surface.h b/components/exo/surface.h
|
| index 032cd57f8af55c8f4bda996a30ef76cbf39baa5e..bb6f72499b8e1910d5ecd2b77f06115da795eb91 100644
|
| --- a/components/exo/surface.h
|
| +++ b/components/exo/surface.h
|
| @@ -18,6 +18,10 @@
|
| #include "cc/resources/transferable_resource.h"
|
| #include "cc/scheduler/begin_frame_source.h"
|
| #include "cc/surfaces/surface_factory_client.h"
|
| +#include "cc/surfaces/surface_id.h"
|
| +#include "cc/surfaces/surface_id_allocator.h"
|
| +#include "components/exo/compositor_frame_sink_holder.h"
|
| +#include "components/exo/exo_compositor_frame_sink.h"
|
| #include "third_party/skia/include/core/SkBlendMode.h"
|
| #include "third_party/skia/include/core/SkRegion.h"
|
| #include "ui/aura/window.h"
|
| @@ -57,42 +61,9 @@ class PropertyHelper;
|
| // change in the future when better hardware cursor support is added.
|
| using CursorProvider = Pointer;
|
|
|
| -// This class owns the SurfaceFactory and keeps track of references to the
|
| -// contents of Buffers. It's keeped alive by references from
|
| -// release_callbacks_. It's destroyed when its owning Surface is destroyed and
|
| -// the last outstanding release callback is called.
|
| -class SurfaceFactoryOwner : public base::RefCounted<SurfaceFactoryOwner>,
|
| - public cc::SurfaceFactoryClient {
|
| - public:
|
| - SurfaceFactoryOwner();
|
| -
|
| - // Overridden from cc::SurfaceFactoryClient:
|
| - void ReturnResources(const cc::ReturnedResourceArray& resources) override;
|
| - void WillDrawSurface(const cc::LocalFrameId& id,
|
| - const gfx::Rect& damage_rect) override;
|
| - void SetBeginFrameSource(cc::BeginFrameSource* begin_frame_source) override;
|
| -
|
| - private:
|
| - friend class base::RefCounted<SurfaceFactoryOwner>;
|
| - friend class Surface;
|
| -
|
| - ~SurfaceFactoryOwner() override;
|
| -
|
| - std::map<int,
|
| - std::pair<scoped_refptr<SurfaceFactoryOwner>,
|
| - std::unique_ptr<cc::SingleReleaseCallback>>>
|
| - release_callbacks_;
|
| - cc::FrameSinkId frame_sink_id_;
|
| - std::unique_ptr<cc::SurfaceIdAllocator> id_allocator_;
|
| - std::unique_ptr<cc::SurfaceFactory> surface_factory_;
|
| - Surface* surface_ = nullptr;
|
| -};
|
| -
|
| // This class represents a rectangular area that is displayed on the screen.
|
| // It has a location, size and pixel contents.
|
| -class Surface : public ui::ContextFactoryObserver,
|
| - public aura::WindowObserver,
|
| - public cc::BeginFrameObserver {
|
| +class Surface : public ui::ContextFactoryObserver, public aura::WindowObserver {
|
| public:
|
| using PropertyDeallocator = void (*)(int64_t value);
|
|
|
| @@ -104,7 +75,6 @@ class Surface : public ui::ContextFactoryObserver,
|
|
|
| aura::Window* window() { return window_.get(); }
|
|
|
| - const cc::LocalFrameId& local_frame_id() const { return local_frame_id_; }
|
| cc::SurfaceId GetSurfaceId() const;
|
|
|
| // Set a buffer as the content of this surface. A buffer can only be attached
|
| @@ -118,7 +88,6 @@ class Surface : public ui::ContextFactoryObserver,
|
|
|
| // Request notification when the next frame is displayed. Useful for
|
| // throttling redrawing operations, and driving animations.
|
| - using FrameCallback = base::Callback<void(base::TimeTicks frame_time)>;
|
| void RequestFrameCallback(const FrameCallback& callback);
|
|
|
| // This sets the region of the surface that contains opaque content.
|
| @@ -229,11 +198,6 @@ class Surface : public ui::ContextFactoryObserver,
|
| void OnWindowRemovingFromRootWindow(aura::Window* window,
|
| aura::Window* new_root) override;
|
|
|
| - // Overridden from cc::BeginFrameObserver:
|
| - void OnBeginFrame(const cc::BeginFrameArgs& args) override;
|
| - const cc::BeginFrameArgs& LastUsedBeginFrameArgs() const override;
|
| - void OnBeginFrameSourcePausedChanged(bool paused) override {}
|
| -
|
| // Sets the |value| of the given surface |property|. Setting to the default
|
| // value (e.g., NULL) removes the property. The caller is responsible for the
|
| // lifetime of any object set as a property on the Surface.
|
| @@ -314,9 +278,6 @@ class Surface : public ui::ContextFactoryObserver,
|
| // current_resource_.
|
| void UpdateSurface(bool full_damage);
|
|
|
| - // Adds/Removes begin frame observer based on state.
|
| - void UpdateNeedsBeginFrame();
|
| -
|
| int64_t SetPropertyInternal(const void* key,
|
| const char* name,
|
| PropertyDeallocator deallocator,
|
| @@ -350,11 +311,14 @@ class Surface : public ui::ContextFactoryObserver,
|
| // The buffer that will become the content of surface when Commit() is called.
|
| BufferAttachment pending_buffer_;
|
|
|
| + const cc::FrameSinkId frame_sink_id_;
|
| +
|
| cc::SurfaceManager* surface_manager_;
|
|
|
| - scoped_refptr<SurfaceFactoryOwner> factory_owner_;
|
| + scoped_refptr<CompositorFrameSinkHolder> compositor_frame_sink_holder_;
|
| +
|
| + cc::SurfaceIdAllocator id_allocator_;
|
|
|
| - // The Surface Id currently attached to the window.
|
| cc::LocalFrameId local_frame_id_;
|
|
|
| // The next resource id the buffer will be attached to.
|
| @@ -370,7 +334,6 @@ class Surface : public ui::ContextFactoryObserver,
|
| // be drawn. They fire at the first begin frame notification after this.
|
| std::list<FrameCallback> pending_frame_callbacks_;
|
| std::list<FrameCallback> frame_callbacks_;
|
| - std::list<FrameCallback> active_frame_callbacks_;
|
|
|
| // This is the state that has yet to be committed.
|
| State pending_state_;
|
| @@ -407,11 +370,6 @@ class Surface : public ui::ContextFactoryObserver,
|
| // maintains.
|
| SurfaceDelegate* delegate_ = nullptr;
|
|
|
| - // The begin frame source being observed.
|
| - cc::BeginFrameSource* begin_frame_source_ = nullptr;
|
| - cc::BeginFrameArgs last_begin_frame_args_;
|
| - bool needs_begin_frame_ = false;
|
| -
|
| struct Value {
|
| const char* name;
|
| int64_t value;
|
| @@ -423,6 +381,8 @@ class Surface : public ui::ContextFactoryObserver,
|
| // Surface observer list. Surface does not own the observers.
|
| base::ObserverList<SurfaceObserver, true> observers_;
|
|
|
| + base::WeakPtrFactory<Surface> weak_ptr_factory_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(Surface);
|
| };
|
|
|
|
|