| Index: cc/surfaces/surface.cc
|
| diff --git a/cc/surfaces/surface.cc b/cc/surfaces/surface.cc
|
| index 065aa3822895dec4fdd64bb8d520c1aa80d45b58..97575813f489a415f91200917efa0f14dd47d7a6 100644
|
| --- a/cc/surfaces/surface.cc
|
| +++ b/cc/surfaces/surface.cc
|
| @@ -41,14 +41,22 @@ void Surface::QueueFrame(scoped_ptr<CompositorFrame> frame,
|
| const DrawCallback& callback) {
|
| DCHECK(factory_);
|
| ClearCopyRequests();
|
| - TakeLatencyInfo(&frame->metadata.latency_info);
|
| +
|
| + if (frame) {
|
| + TakeLatencyInfo(&frame->metadata.latency_info);
|
| + }
|
| +
|
| scoped_ptr<CompositorFrame> previous_frame = current_frame_.Pass();
|
| current_frame_ = frame.Pass();
|
| - factory_->ReceiveFromChild(
|
| - current_frame_->delegated_frame_data->resource_list);
|
| +
|
| + if (current_frame_) {
|
| + factory_->ReceiveFromChild(
|
| + current_frame_->delegated_frame_data->resource_list);
|
| + }
|
| +
|
| // Empty frames shouldn't be drawn and shouldn't contribute damage, so don't
|
| // increment frame index for them.
|
| - if (!current_frame_ ||
|
| + if (current_frame_ &&
|
| !current_frame_->delegated_frame_data->render_pass_list.empty())
|
| ++frame_index_;
|
|
|
| @@ -62,9 +70,12 @@ void Surface::QueueFrame(scoped_ptr<CompositorFrame> frame,
|
| if (!draw_callback_.is_null())
|
| draw_callback_.Run(SurfaceDrawStatus::DRAW_SKIPPED);
|
| draw_callback_ = callback;
|
| - factory_->manager()->DidSatisfySequences(
|
| - SurfaceIdAllocator::NamespaceForId(surface_id_),
|
| - ¤t_frame_->metadata.satisfies_sequences);
|
| +
|
| + if (current_frame_) {
|
| + factory_->manager()->DidSatisfySequences(
|
| + SurfaceIdAllocator::NamespaceForId(surface_id_),
|
| + ¤t_frame_->metadata.satisfies_sequences);
|
| + }
|
| }
|
|
|
| void Surface::RequestCopyOfOutput(scoped_ptr<CopyOutputRequest> copy_request) {
|
|
|