| Index: cc/surfaces/surface.cc
 | 
| diff --git a/cc/surfaces/surface.cc b/cc/surfaces/surface.cc
 | 
| deleted file mode 100644
 | 
| index 065aa3822895dec4fdd64bb8d520c1aa80d45b58..0000000000000000000000000000000000000000
 | 
| --- a/cc/surfaces/surface.cc
 | 
| +++ /dev/null
 | 
| @@ -1,144 +0,0 @@
 | 
| -// Copyright 2014 The Chromium Authors. All rights reserved.
 | 
| -// Use of this source code is governed by a BSD-style license that can be
 | 
| -// found in the LICENSE file.
 | 
| -
 | 
| -#include "cc/surfaces/surface.h"
 | 
| -
 | 
| -#include <algorithm>
 | 
| -
 | 
| -#include "cc/output/compositor_frame.h"
 | 
| -#include "cc/output/copy_output_request.h"
 | 
| -#include "cc/surfaces/surface_factory.h"
 | 
| -#include "cc/surfaces/surface_id_allocator.h"
 | 
| -#include "cc/surfaces/surface_manager.h"
 | 
| -
 | 
| -namespace cc {
 | 
| -
 | 
| -// The frame index starts at 2 so that empty frames will be treated as
 | 
| -// completely damaged the first time they're drawn from.
 | 
| -static const int kFrameIndexStart = 2;
 | 
| -
 | 
| -Surface::Surface(SurfaceId id, SurfaceFactory* factory)
 | 
| -    : surface_id_(id),
 | 
| -      factory_(factory->AsWeakPtr()),
 | 
| -      frame_index_(kFrameIndexStart) {
 | 
| -}
 | 
| -
 | 
| -Surface::~Surface() {
 | 
| -  ClearCopyRequests();
 | 
| -  if (current_frame_ && factory_) {
 | 
| -    ReturnedResourceArray current_resources;
 | 
| -    TransferableResource::ReturnResources(
 | 
| -        current_frame_->delegated_frame_data->resource_list,
 | 
| -        ¤t_resources);
 | 
| -    factory_->UnrefResources(current_resources);
 | 
| -  }
 | 
| -  if (!draw_callback_.is_null())
 | 
| -    draw_callback_.Run(SurfaceDrawStatus::DRAW_SKIPPED);
 | 
| -}
 | 
| -
 | 
| -void Surface::QueueFrame(scoped_ptr<CompositorFrame> frame,
 | 
| -                         const DrawCallback& callback) {
 | 
| -  DCHECK(factory_);
 | 
| -  ClearCopyRequests();
 | 
| -  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);
 | 
| -  // Empty frames shouldn't be drawn and shouldn't contribute damage, so don't
 | 
| -  // increment frame index for them.
 | 
| -  if (!current_frame_ ||
 | 
| -      !current_frame_->delegated_frame_data->render_pass_list.empty())
 | 
| -    ++frame_index_;
 | 
| -
 | 
| -  if (previous_frame) {
 | 
| -    ReturnedResourceArray previous_resources;
 | 
| -    TransferableResource::ReturnResources(
 | 
| -        previous_frame->delegated_frame_data->resource_list,
 | 
| -        &previous_resources);
 | 
| -    factory_->UnrefResources(previous_resources);
 | 
| -  }
 | 
| -  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);
 | 
| -}
 | 
| -
 | 
| -void Surface::RequestCopyOfOutput(scoped_ptr<CopyOutputRequest> copy_request) {
 | 
| -  if (current_frame_ &&
 | 
| -      !current_frame_->delegated_frame_data->render_pass_list.empty())
 | 
| -    current_frame_->delegated_frame_data->render_pass_list.back()
 | 
| -        ->copy_requests.push_back(copy_request.Pass());
 | 
| -  else
 | 
| -    copy_request->SendEmptyResult();
 | 
| -}
 | 
| -
 | 
| -void Surface::TakeCopyOutputRequests(
 | 
| -    std::multimap<RenderPassId, CopyOutputRequest*>* copy_requests) {
 | 
| -  DCHECK(copy_requests->empty());
 | 
| -  if (current_frame_) {
 | 
| -    for (const auto& render_pass :
 | 
| -         current_frame_->delegated_frame_data->render_pass_list) {
 | 
| -      while (!render_pass->copy_requests.empty()) {
 | 
| -        scoped_ptr<CopyOutputRequest> request =
 | 
| -            render_pass->copy_requests.take_back();
 | 
| -        render_pass->copy_requests.pop_back();
 | 
| -        copy_requests->insert(
 | 
| -            std::make_pair(render_pass->id, request.release()));
 | 
| -      }
 | 
| -    }
 | 
| -  }
 | 
| -}
 | 
| -
 | 
| -const CompositorFrame* Surface::GetEligibleFrame() {
 | 
| -  return current_frame_.get();
 | 
| -}
 | 
| -
 | 
| -void Surface::TakeLatencyInfo(std::vector<ui::LatencyInfo>* latency_info) {
 | 
| -  if (!current_frame_)
 | 
| -    return;
 | 
| -  if (latency_info->empty()) {
 | 
| -    current_frame_->metadata.latency_info.swap(*latency_info);
 | 
| -    return;
 | 
| -  }
 | 
| -  std::copy(current_frame_->metadata.latency_info.begin(),
 | 
| -            current_frame_->metadata.latency_info.end(),
 | 
| -            std::back_inserter(*latency_info));
 | 
| -  current_frame_->metadata.latency_info.clear();
 | 
| -}
 | 
| -
 | 
| -void Surface::RunDrawCallbacks(SurfaceDrawStatus drawn) {
 | 
| -  if (!draw_callback_.is_null()) {
 | 
| -    DrawCallback callback = draw_callback_;
 | 
| -    draw_callback_ = DrawCallback();
 | 
| -    callback.Run(drawn);
 | 
| -  }
 | 
| -}
 | 
| -
 | 
| -void Surface::AddDestructionDependency(SurfaceSequence sequence) {
 | 
| -  destruction_dependencies_.push_back(sequence);
 | 
| -}
 | 
| -
 | 
| -void Surface::SatisfyDestructionDependencies(
 | 
| -    base::hash_set<SurfaceSequence>* sequences) {
 | 
| -  destruction_dependencies_.erase(
 | 
| -      std::remove_if(
 | 
| -          destruction_dependencies_.begin(), destruction_dependencies_.end(),
 | 
| -          [sequences](SurfaceSequence seq) { return !!sequences->erase(seq); }),
 | 
| -      destruction_dependencies_.end());
 | 
| -}
 | 
| -
 | 
| -void Surface::ClearCopyRequests() {
 | 
| -  if (current_frame_) {
 | 
| -    for (const auto& render_pass :
 | 
| -         current_frame_->delegated_frame_data->render_pass_list) {
 | 
| -      for (const auto& copy_request : render_pass->copy_requests)
 | 
| -        copy_request->SendEmptyResult();
 | 
| -    }
 | 
| -  }
 | 
| -}
 | 
| -
 | 
| -}  // namespace cc
 | 
| 
 |