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

Unified Diff: content/renderer/android/synchronous_compositor_output_surface.h

Issue 2128113002: Use a cc::Display for WebView resourceless software draws. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: displaywebview: mojom Created 4 years, 5 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/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..b26e18acb2b8f98866ac4c1e40d8ded4091d338d 100644
--- a/content/renderer/android/synchronous_compositor_output_surface.h
+++ b/content/renderer/android/synchronous_compositor_output_surface.h
@@ -18,12 +18,18 @@
#include "cc/output/compositor_frame.h"
#include "cc/output/managed_memory_policy.h"
#include "cc/output/output_surface.h"
+#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 Display;
+class SurfaceFactory;
+class SurfaceIdAllocator;
+class SurfaceManager;
}
namespace IPC {
@@ -57,7 +63,8 @@ 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,
@@ -92,14 +99,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();
@@ -117,21 +124,39 @@ class SynchronousCompositorOutputSurface
const uint32_t output_surface_id_;
SynchronousCompositorRegistry* const registry_; // Not owned.
IPC::Sender* const sender_; // Not owned.
- bool registered_;
+ bool registered_ = false;
// 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_;
« no previous file with comments | « cc/trees/layer_tree_host_impl_unittest.cc ('k') | content/renderer/android/synchronous_compositor_output_surface.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698