| Index: cc/resources/video_resource_updater.h
 | 
| diff --git a/cc/resources/video_resource_updater.h b/cc/resources/video_resource_updater.h
 | 
| index 38f60331286707828e0ea350d833ef1b8fe7d963..622fe68d7c634829da03be8fea9350cb1a421598 100644
 | 
| --- a/cc/resources/video_resource_updater.h
 | 
| +++ b/cc/resources/video_resource_updater.h
 | 
| @@ -5,6 +5,7 @@
 | 
|  #ifndef CC_RESOURCES_VIDEO_RESOURCE_UPDATER_H_
 | 
|  #define CC_RESOURCES_VIDEO_RESOURCE_UPDATER_H_
 | 
|  
 | 
| +#include <list>
 | 
|  #include <vector>
 | 
|  
 | 
|  #include "base/basictypes.h"
 | 
| @@ -78,6 +79,9 @@ class CC_EXPORT VideoResourceUpdater
 | 
|      gfx::Size resource_size;
 | 
|      ResourceFormat resource_format;
 | 
|      gpu::Mailbox mailbox;
 | 
| +    // The balance between the number of times this resource has been returned
 | 
| +    // from CreateForSoftwarePlanes vs released in RecycleResource.
 | 
| +    int ref_count;
 | 
|      // These last three members will be used for identifying the data stored in
 | 
|      // this resource, and uniquely identifies a media::VideoFrame plane. The
 | 
|      // frame pointer will only be used for pointer comparison, i.e. the
 | 
| @@ -100,7 +104,13 @@ class CC_EXPORT VideoResourceUpdater
 | 
|                                         int plane_index,
 | 
|                                         PlaneResource* plane_resource);
 | 
|  
 | 
| -  void DeleteResource(unsigned resource_id);
 | 
| +  // This needs to be a container where iterators can be erased without
 | 
| +  // invalidating other iterators.
 | 
| +  typedef std::list<PlaneResource> ResourceList;
 | 
| +  ResourceList::iterator AllocateResource(const gfx::Size& plane_size,
 | 
| +                                          ResourceFormat format,
 | 
| +                                          bool has_mailbox);
 | 
| +  void DeleteResource(ResourceList::iterator resource_it);
 | 
|    bool VerifyFrame(const scoped_refptr<media::VideoFrame>& video_frame);
 | 
|    VideoFrameExternalResources CreateForHardwarePlanes(
 | 
|        const scoped_refptr<media::VideoFrame>& video_frame);
 | 
| @@ -108,7 +118,7 @@ class CC_EXPORT VideoResourceUpdater
 | 
|        const scoped_refptr<media::VideoFrame>& video_frame);
 | 
|  
 | 
|    static void RecycleResource(base::WeakPtr<VideoResourceUpdater> updater,
 | 
| -                              PlaneResource data,
 | 
| +                              unsigned resource_id,
 | 
|                                uint32 sync_point,
 | 
|                                bool lost_resource,
 | 
|                                BlockingTaskRunner* main_thread_task_runner);
 | 
| @@ -122,10 +132,9 @@ class CC_EXPORT VideoResourceUpdater
 | 
|    ResourceProvider* resource_provider_;
 | 
|    scoped_ptr<media::SkCanvasVideoRenderer> video_renderer_;
 | 
|  
 | 
| -  std::vector<unsigned> all_resources_;
 | 
|    // Recycle resources so that we can reduce the number of allocations and
 | 
|    // data transfers.
 | 
| -  std::vector<PlaneResource> recycled_resources_;
 | 
| +  ResourceList all_resources_;
 | 
|  
 | 
|    DISALLOW_COPY_AND_ASSIGN(VideoResourceUpdater);
 | 
|  };
 | 
| 
 |