Chromium Code Reviews| Index: content/renderer/android/synchronous_compositor_output_surface.h |
| diff --git a/content/renderer/android/synchronous_compositor_output_surface.h b/content/renderer/android/synchronous_compositor_output_surface.h |
| index 0972094141885bf755a11aebb5278f55e141332d..f4443b760d25d44f6d71a9f880128255033de801 100644 |
| --- a/content/renderer/android/synchronous_compositor_output_surface.h |
| +++ b/content/renderer/android/synchronous_compositor_output_surface.h |
| @@ -18,12 +18,19 @@ |
| #include "cc/output/compositor_frame.h" |
| #include "cc/output/managed_memory_policy.h" |
| #include "cc/output/output_surface.h" |
| +#include "cc/surfaces/display.h" |
|
boliu
2016/07/07 00:37:54
should be ok to forward declare
danakj
2016/07/07 00:46:30
Done.
|
| +#include "cc/surfaces/display_client.h" |
| +#include "cc/surfaces/surface_factory_client.h" |
| #include "ipc/ipc_message.h" |
| #include "ui/gfx/transform.h" |
| namespace cc { |
| class ContextProvider; |
| class CompositorFrameMetadata; |
| +class SharedBitmapManager; |
| +class SurfaceFactory; |
| +class SurfaceIdAllocator; |
| +class SurfaceManager; |
| } |
| namespace IPC { |
| @@ -57,11 +64,13 @@ class SynchronousCompositorOutputSurfaceClient { |
| // This class can be created only on the main thread, but then becomes pinned |
| // to a fixed thread when BindToClient is called. |
| class SynchronousCompositorOutputSurface |
| - : NON_EXPORTED_BASE(public cc::OutputSurface) { |
| + : NON_EXPORTED_BASE(public cc::OutputSurface), |
| + public cc::SurfaceFactoryClient { |
| public: |
| SynchronousCompositorOutputSurface( |
| scoped_refptr<cc::ContextProvider> context_provider, |
| scoped_refptr<cc::ContextProvider> worker_context_provider, |
| + cc::SharedBitmapManager* shared_bitmap_manager, |
| int routing_id, |
| uint32_t output_surface_id, |
| SynchronousCompositorRegistry* registry, |
| @@ -92,14 +101,14 @@ class SynchronousCompositorOutputSurface |
| const gfx::Transform& transform_for_tile_priority); |
| void DemandDrawSw(SkCanvas* canvas); |
| - private: |
| - class SoftwareDevice; |
| - friend class SoftwareDevice; |
| + // SurfaceFactoryClient implementation. |
| + void ReturnResources(const cc::ReturnedResourceArray& resources) override; |
| + void SetBeginFrameSource(cc::BeginFrameSource* begin_frame_source) override; |
| + private: |
| void InvokeComposite(const gfx::Transform& transform, |
| const gfx::Rect& viewport, |
| - const gfx::Rect& clip, |
| - bool hardware_draw); |
| + const gfx::Rect& clip); |
| bool Send(IPC::Message* message); |
| void DidActivatePendingTree(); |
| void DeliverMessages(); |
| @@ -113,25 +122,44 @@ class SynchronousCompositorOutputSurface |
| void OnReclaimResources(uint32_t output_surface_id, |
| const cc::CompositorFrameAck& ack); |
| + cc::SharedBitmapManager* const shared_bitmap_manager_; |
| const int routing_id_; |
| const uint32_t output_surface_id_; |
| SynchronousCompositorRegistry* const registry_; // Not owned. |
| IPC::Sender* const sender_; // Not owned. |
| - bool registered_; |
| + bool registered_ = false; |
|
boliu
2016/07/07 00:37:54
inline init is just ok for all constant values now
danakj
2016/07/07 00:46:30
For non-constant also. The contructor will set the
|
| // Not owned. |
| - SynchronousCompositorOutputSurfaceClient* sync_client_; |
| + SynchronousCompositorOutputSurfaceClient* sync_client_ = nullptr; |
| // Only valid (non-NULL) during a DemandDrawSw() call. |
| - SkCanvas* current_sw_canvas_; |
| + SkCanvas* current_sw_canvas_ = nullptr; |
| cc::ManagedMemoryPolicy memory_policy_; |
| - bool did_swap_; |
| + bool in_software_draw_ = false; |
| + bool did_swap_ = false; |
| scoped_refptr<FrameSwapMessageQueue> frame_swap_message_queue_; |
| base::CancelableClosure fallback_tick_; |
| - bool fallback_tick_pending_; |
| - bool fallback_tick_running_; |
| + bool fallback_tick_pending_ = false; |
| + bool fallback_tick_running_ = false; |
| + |
| + class StubDisplayClient : public cc::DisplayClient { |
| + void DisplayOutputSurfaceLost() override {} |
| + void DisplaySetMemoryPolicy( |
| + const cc::ManagedMemoryPolicy& policy) override {} |
| + }; |
| + |
| + // TODO(danakj): These don't to be stored in unique_ptrs when OutputSurface |
| + // is owned/destroyed on the compositor thread. |
| + std::unique_ptr<cc::SurfaceManager> surface_manager_; |
| + std::unique_ptr<cc::SurfaceIdAllocator> surface_id_allocator_; |
| + cc::SurfaceId delegated_surface_id_; |
| + // Uses surface_manager_. |
| + std::unique_ptr<cc::SurfaceFactory> surface_factory_; |
| + StubDisplayClient display_client_; |
| + // Uses surface_manager_. |
| + std::unique_ptr<cc::Display> display_; |
| base::ThreadChecker thread_checker_; |