Index: content/browser/android/in_process/synchronous_compositor_output_surface.cc |
diff --git a/content/browser/android/in_process/synchronous_compositor_output_surface.cc b/content/browser/android/in_process/synchronous_compositor_output_surface.cc |
index 48c2bf1e7720576df20fcc126a9b96e6dc5bf490..172f639261b1830894063b59770200b2d3ed90fa 100644 |
--- a/content/browser/android/in_process/synchronous_compositor_output_surface.cc |
+++ b/content/browser/android/in_process/synchronous_compositor_output_surface.cc |
@@ -71,9 +71,7 @@ SynchronousCompositorOutputSurface::SynchronousCompositorOutputSurface( |
registered_(false), |
current_sw_canvas_(nullptr), |
memory_policy_(0), |
- output_surface_client_(nullptr), |
- frame_swap_message_queue_(frame_swap_message_queue), |
- begin_frame_source_(nullptr) { |
+ frame_swap_message_queue_(frame_swap_message_queue) { |
capabilities_.deferred_gl_initialization = true; |
capabilities_.draw_and_swap_full_viewport_every_frame = true; |
capabilities_.adjust_deadline_for_parent = false; |
@@ -89,7 +87,6 @@ SynchronousCompositorOutputSurface::~SynchronousCompositorOutputSurface() { |
SynchronousCompositorRegistry::GetInstance()->UnregisterOutputSurface( |
routing_id_, this); |
} |
- DCHECK(!begin_frame_source_); |
} |
bool SynchronousCompositorOutputSurface::BindToClient( |
@@ -98,8 +95,7 @@ bool SynchronousCompositorOutputSurface::BindToClient( |
if (!cc::OutputSurface::BindToClient(surface_client)) |
return false; |
- output_surface_client_ = surface_client; |
- output_surface_client_->SetMemoryPolicy(memory_policy_); |
+ client_->SetMemoryPolicy(memory_policy_); |
SynchronousCompositorRegistry::GetInstance()->RegisterOutputSurface( |
routing_id_, this); |
@@ -108,6 +104,12 @@ bool SynchronousCompositorOutputSurface::BindToClient( |
return true; |
} |
+void SynchronousCompositorOutputSurface::SetCompositor( |
+ SynchronousCompositorImpl* compositor) { |
+ DCHECK(CalledOnValidThread()); |
+ compositor_ = compositor; |
+} |
+ |
void SynchronousCompositorOutputSurface::Reshape( |
const gfx::Size& size, float scale_factor) { |
// Intentional no-op: surface size is controlled by the embedder. |
@@ -123,9 +125,9 @@ void SynchronousCompositorOutputSurface::SwapBuffers( |
client_->DidSwapBuffers(); |
} |
-void SynchronousCompositorOutputSurface::SetBeginFrameSource( |
- SynchronousCompositorExternalBeginFrameSource* begin_frame_source) { |
- begin_frame_source_ = begin_frame_source; |
+void SynchronousCompositorOutputSurface::Invalidate() { |
+ DCHECK(CalledOnValidThread()); |
+ compositor_->PostInvalidate(); |
} |
namespace { |
@@ -179,6 +181,7 @@ SynchronousCompositorOutputSurface::DemandDrawSw(SkCanvas* canvas) { |
DCHECK(CalledOnValidThread()); |
DCHECK(canvas); |
DCHECK(!current_sw_canvas_); |
+ |
base::AutoReset<SkCanvas*> canvas_resetter(¤t_sw_canvas_, canvas); |
SkIRect canvas_clip; |
@@ -212,7 +215,6 @@ void SynchronousCompositorOutputSurface::InvokeComposite( |
gfx::Transform transform_for_tile_priority, |
bool hardware_draw) { |
DCHECK(!frame_holder_.get()); |
- DCHECK(begin_frame_source_); |
gfx::Transform adjusted_transform = transform; |
AdjustTransform(&adjusted_transform, viewport); |
@@ -224,7 +226,7 @@ void SynchronousCompositorOutputSurface::InvokeComposite( |
!hardware_draw); |
SetNeedsRedrawRect(gfx::Rect(viewport.size())); |
- begin_frame_source_->BeginFrame(); |
+ client_->OnDraw(); |
// After software draws (which might move the viewport arbitrarily), restore |
// the previous hardware viewport to allow CC's tile manager to prioritize |
@@ -260,8 +262,8 @@ void SynchronousCompositorOutputSurface::SetMemoryPolicy(size_t bytes_limit) { |
memory_policy_.bytes_limit_when_visible = bytes_limit; |
memory_policy_.num_resources_limit = kNumResourcesLimit; |
- if (output_surface_client_) |
- output_surface_client_->SetMemoryPolicy(memory_policy_); |
+ if (client_) |
+ client_->SetMemoryPolicy(memory_policy_); |
} |
void SynchronousCompositorOutputSurface::SetTreeActivationCallback( |