| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 
|  | 2 // Use of this source code is governed by a BSD-style license that can be | 
|  | 3 // found in the LICENSE file. | 
|  | 4 | 
|  | 5 #ifndef CC_LAYERS_DELEGATED_FRAME_RESOURCE_COLLECTION_H_ | 
|  | 6 #define CC_LAYERS_DELEGATED_FRAME_RESOURCE_COLLECTION_H_ | 
|  | 7 | 
|  | 8 #include "base/containers/hash_tables.h" | 
|  | 9 #include "base/memory/ref_counted.h" | 
|  | 10 #include "base/threading/thread_checker.h" | 
|  | 11 #include "cc/base/cc_export.h" | 
|  | 12 #include "cc/resources/return_callback.h" | 
|  | 13 #include "cc/resources/returned_resource.h" | 
|  | 14 #include "cc/resources/transferable_resource.h" | 
|  | 15 | 
|  | 16 namespace cc { | 
|  | 17 class BlockingTaskRunner; | 
|  | 18 | 
|  | 19 class CC_EXPORT DelegatedFrameResourceCollectionClient { | 
|  | 20  public: | 
|  | 21   // Called to inform the client that returned resources can be | 
|  | 22   // grabbed off the DelegatedFrameResourceCollection. | 
|  | 23   virtual void UnusedResourcesAreAvailable() = 0; | 
|  | 24 }; | 
|  | 25 | 
|  | 26 class CC_EXPORT DelegatedFrameResourceCollection | 
|  | 27     : public base::RefCounted<DelegatedFrameResourceCollection> { | 
|  | 28  public: | 
|  | 29   explicit DelegatedFrameResourceCollection(); | 
|  | 30 | 
|  | 31   void SetClient(DelegatedFrameResourceCollectionClient* client); | 
|  | 32 | 
|  | 33   void TakeUnusedResourcesForChildCompositor(ReturnedResourceArray* array); | 
|  | 34 | 
|  | 35   // Methods for DelegatedFrameProvider. | 
|  | 36   void RefResources(const TransferableResourceArray& resources); | 
|  | 37   ReturnCallback GetReturnResourcesCallbackForImplThread(); | 
|  | 38   void ReceivedResources(const TransferableResourceArray& resources); | 
|  | 39   void ReturnResources(const ReturnedResourceArray& returned); | 
|  | 40 | 
|  | 41  private: | 
|  | 42   friend base::RefCounted<DelegatedFrameResourceCollection>; | 
|  | 43   ~DelegatedFrameResourceCollection(); | 
|  | 44 | 
|  | 45   void UnrefResources(const ReturnedResourceArray& returned); | 
|  | 46   void UnrefResourcesOnImplThread( | 
|  | 47       scoped_refptr<BlockingTaskRunner> main_thread_runner, | 
|  | 48       const ReturnedResourceArray& returned); | 
|  | 49 | 
|  | 50   DelegatedFrameResourceCollectionClient* client_; | 
|  | 51   scoped_refptr<BlockingTaskRunner> main_thread_runner_; | 
|  | 52 | 
|  | 53   ReturnedResourceArray returned_resources_for_child_compositor_; | 
|  | 54 | 
|  | 55   struct RefCount { | 
|  | 56     int refs_to_return; | 
|  | 57     int refs_to_wait_for; | 
|  | 58   }; | 
|  | 59   typedef base::hash_map<unsigned, RefCount> ResourceIdRefCountMap; | 
|  | 60   ResourceIdRefCountMap resource_id_ref_count_map_; | 
|  | 61 | 
|  | 62   base::ThreadChecker main_thread_checker_; | 
|  | 63 | 
|  | 64   DISALLOW_COPY_AND_ASSIGN(DelegatedFrameResourceCollection); | 
|  | 65 }; | 
|  | 66 | 
|  | 67 }  // namespace cc | 
|  | 68 | 
|  | 69 #endif  // CC_LAYERS_DELEGATED_FRAME_RESOURCE_COLLECTION_H_ | 
| OLD | NEW | 
|---|