Chromium Code Reviews| 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 8d250820209ef757ef26aea5f4d60afe1fc9f727..d8c0c1cc2e8af0e4981dfd523959ccefd453785a 100644 |
| --- a/content/browser/android/in_process/synchronous_compositor_output_surface.cc |
| +++ b/content/browser/android/in_process/synchronous_compositor_output_surface.cc |
| @@ -59,13 +59,15 @@ class SynchronousCompositorOutputSurface::SoftwareDevice |
| // Intentional no-op: canvas size is controlled by the embedder. |
| } |
| virtual SkCanvas* BeginPaint(gfx::Rect damage_rect) OVERRIDE { |
| - DCHECK(surface_->current_sw_canvas_); |
| - if (surface_->current_sw_canvas_) |
| - return surface_->current_sw_canvas_; |
| - return &null_canvas_; |
| + if (!surface_->current_sw_canvas_) { |
| + NOTREACHED() << "BeginPaint with no canvas set"; |
| + return &null_canvas_; |
| + } |
| + LOG_IF(WARNING, surface_->did_swap_buffer_) |
| + << "Mutliple calls to BeginPaint per frame"; |
| + return surface_->current_sw_canvas_; |
| } |
| virtual void EndPaint(cc::SoftwareFrameData* frame_data) OVERRIDE { |
| - surface_->current_sw_canvas_ = NULL; |
| } |
| virtual void CopyToBitmap(gfx::Rect rect, SkBitmap* output) OVERRIDE { |
| NOTIMPLEMENTED(); |
| @@ -119,12 +121,6 @@ void SynchronousCompositorOutputSurface::Reshape( |
| // Intentional no-op: surface size is controlled by the embedder. |
| } |
| -void SynchronousCompositorOutputSurface::SendFrameToParentCompositor( |
| - cc::CompositorFrame* frame) { |
| - NOTREACHED(); |
| - // TODO(joth): Route page scale to the client, see http://crbug.com/237006 |
| -} |
| - |
| void SynchronousCompositorOutputSurface::SetNeedsBeginFrame( |
| bool enable) { |
| DCHECK(CalledOnValidThread()); |
| @@ -135,8 +131,11 @@ void SynchronousCompositorOutputSurface::SetNeedsBeginFrame( |
| } |
| void SynchronousCompositorOutputSurface::SwapBuffers( |
| - const ui::LatencyInfo& info) { |
| - context3d()->shallowFlushCHROMIUM(); |
| + cc::CompositorFrame* frame) { |
| + if (!ForcedDrawToSoftwareDevice()) { |
| + DCHECK(context3d()); |
| + context3d()->shallowFlushCHROMIUM(); |
| + } |
| did_swap_buffer_ = true; |
|
joth
2013/06/10 18:43:32
// TODO(joth): Route page scale to the client, see
aelias_OOO_until_Jul13
2013/06/10 18:57:57
Done.
|
| } |
| @@ -174,8 +173,6 @@ bool SynchronousCompositorOutputSurface::DemandDrawHw( |
| if (current_context) |
| current_context->ReleaseCurrent(NULL); |
| - did_swap_buffer_ = false; |
| - |
| gfx::Transform adjusted_transform = transform; |
| AdjustTransformForClip(&adjusted_transform, clip); |
| surface_size_ = surface_size; |
| @@ -214,9 +211,13 @@ bool SynchronousCompositorOutputSurface::DemandDrawSw(SkCanvas* canvas) { |
| void SynchronousCompositorOutputSurface::InvokeComposite( |
| gfx::Size damage_size) { |
| + did_swap_buffer_ = false; |
| client_->SetNeedsRedrawRect(gfx::Rect(damage_size)); |
| if (needs_begin_frame_) |
| client_->BeginFrame(base::TimeTicks::Now()); |
| + |
| + if (did_swap_buffer_) |
| + client_->OnSwapBuffersComplete(NULL); |
| } |
| // Not using base::NonThreadSafe as we want to enforce a more exacting threading |