Chromium Code Reviews| Index: cc/surfaces/surface_display_output_surface.cc |
| diff --git a/cc/surfaces/surface_display_output_surface.cc b/cc/surfaces/surface_display_output_surface.cc |
| index e1f90da761421f5a97bbf939f6714c3fa00144a6..c64f7b768132d81bfe392ed0e17208628cca2cdf 100644 |
| --- a/cc/surfaces/surface_display_output_surface.cc |
| +++ b/cc/surfaces/surface_display_output_surface.cc |
| @@ -21,7 +21,8 @@ SurfaceDisplayOutputSurface::SurfaceDisplayOutputSurface( |
| : OutputSurface(context_provider), |
| display_client_(NULL), |
| factory_(surface_manager, this), |
| - allocator_(allocator) { |
| + allocator_(allocator), |
| + inside_swap_buffers_(false) { |
|
jbauman
2015/06/10 00:17:45
0
|
| factory_.set_needs_sync_points(false); |
| capabilities_.delegated_rendering = true; |
| capabilities_.max_frames_pending = 1; |
| @@ -46,26 +47,36 @@ void SurfaceDisplayOutputSurface::ReceivedVSyncParameters( |
| } |
| void SurfaceDisplayOutputSurface::SwapBuffers(CompositorFrame* frame) { |
| + inside_swap_buffers_ = 1; |
| + |
| gfx::Size frame_size = |
| frame->delegated_frame_data->render_pass_list.back()->output_rect.size(); |
| if (frame_size.IsEmpty() || frame_size != display_size_) { |
| + inside_swap_buffers_ = 2; |
| if (!surface_id_.is_null()) { |
| factory_.Destroy(surface_id_); |
| } |
| + inside_swap_buffers_ = 3; |
| surface_id_ = allocator_->GenerateId(); |
| factory_.Create(surface_id_); |
| display_size_ = frame_size; |
| } |
| + inside_swap_buffers_ = 4; |
| display_client_->display()->SetSurfaceId(surface_id_, |
| frame->metadata.device_scale_factor); |
| + inside_swap_buffers_ = 5; |
| scoped_ptr<CompositorFrame> frame_copy(new CompositorFrame()); |
| + inside_swap_buffers_ = 6; |
| frame->AssignTo(frame_copy.get()); |
| + inside_swap_buffers_ = 7; |
| factory_.SubmitFrame( |
| surface_id_, frame_copy.Pass(), |
| base::Bind(&SurfaceDisplayOutputSurface::SwapBuffersComplete, |
| base::Unretained(this))); |
| + inside_swap_buffers_ = 0; |
| + |
| client_->DidSwapBuffers(); |
| } |
| @@ -92,6 +103,7 @@ void SurfaceDisplayOutputSurface::ReturnResources( |
| } |
| void SurfaceDisplayOutputSurface::SwapBuffersComplete(SurfaceDrawStatus drawn) { |
| + DCHECK_EQ(0, inside_swap_buffers_); |
| if (client_ && !display_client_->output_surface_lost()) |
| client_->DidSwapBuffersComplete(); |
| } |