Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(884)

Side by Side Diff: cc/resources/resource_pool.h

Issue 1866203004: Convert //cc from scoped_ptr to std::unique_ptr. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: scopedptrcc: rebase Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/resources/memory_history.cc ('k') | cc/resources/resource_pool.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CC_RESOURCES_RESOURCE_POOL_H_ 5 #ifndef CC_RESOURCES_RESOURCE_POOL_H_
6 #define CC_RESOURCES_RESOURCE_POOL_H_ 6 #define CC_RESOURCES_RESOURCE_POOL_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
11 #include <deque> 11 #include <deque>
12 #include <map> 12 #include <map>
13 #include <memory>
13 14
14 #include "base/macros.h" 15 #include "base/macros.h"
15 #include "base/memory/scoped_ptr.h" 16 #include "base/memory/ptr_util.h"
16 #include "base/trace_event/memory_dump_provider.h" 17 #include "base/trace_event/memory_dump_provider.h"
17 #include "cc/base/cc_export.h" 18 #include "cc/base/cc_export.h"
18 #include "cc/output/renderer.h" 19 #include "cc/output/renderer.h"
19 #include "cc/resources/resource.h" 20 #include "cc/resources/resource.h"
20 #include "cc/resources/resource_format.h" 21 #include "cc/resources/resource_format.h"
21 #include "cc/resources/scoped_resource.h" 22 #include "cc/resources/scoped_resource.h"
22 23
23 namespace cc { 24 namespace cc {
24 25
25 class CC_EXPORT ResourcePool : public base::trace_event::MemoryDumpProvider { 26 class CC_EXPORT ResourcePool : public base::trace_event::MemoryDumpProvider {
26 public: 27 public:
27 static scoped_ptr<ResourcePool> CreateForGpuMemoryBufferResources( 28 static std::unique_ptr<ResourcePool> CreateForGpuMemoryBufferResources(
28 ResourceProvider* resource_provider, 29 ResourceProvider* resource_provider,
29 base::SingleThreadTaskRunner* task_runner) { 30 base::SingleThreadTaskRunner* task_runner) {
30 return make_scoped_ptr( 31 return base::WrapUnique(
31 new ResourcePool(resource_provider, task_runner, true)); 32 new ResourcePool(resource_provider, task_runner, true));
32 } 33 }
33 34
34 static scoped_ptr<ResourcePool> Create( 35 static std::unique_ptr<ResourcePool> Create(
35 ResourceProvider* resource_provider, 36 ResourceProvider* resource_provider,
36 base::SingleThreadTaskRunner* task_runner) { 37 base::SingleThreadTaskRunner* task_runner) {
37 return make_scoped_ptr( 38 return base::WrapUnique(
38 new ResourcePool(resource_provider, task_runner, false)); 39 new ResourcePool(resource_provider, task_runner, false));
39 } 40 }
40 41
41 ~ResourcePool() override; 42 ~ResourcePool() override;
42 43
43 Resource* AcquireResource(const gfx::Size& size, ResourceFormat format); 44 Resource* AcquireResource(const gfx::Size& size, ResourceFormat format);
44 Resource* TryAcquireResourceWithContentId(uint64_t content_id); 45 Resource* TryAcquireResourceWithContentId(uint64_t content_id);
45 void ReleaseResource(Resource* resource, uint64_t content_id); 46 void ReleaseResource(Resource* resource, uint64_t content_id);
46 47
47 void SetResourceUsageLimits(size_t max_memory_usage_bytes, 48 void SetResourceUsageLimits(size_t max_memory_usage_bytes,
(...skipping 25 matching lines...) Expand all
73 protected: 74 protected:
74 ResourcePool(ResourceProvider* resource_provider, 75 ResourcePool(ResourceProvider* resource_provider,
75 base::SingleThreadTaskRunner* task_runner, 76 base::SingleThreadTaskRunner* task_runner,
76 bool use_gpu_memory_buffers); 77 bool use_gpu_memory_buffers);
77 78
78 bool ResourceUsageTooHigh(); 79 bool ResourceUsageTooHigh();
79 80
80 private: 81 private:
81 class PoolResource : public ScopedResource { 82 class PoolResource : public ScopedResource {
82 public: 83 public:
83 static scoped_ptr<PoolResource> Create( 84 static std::unique_ptr<PoolResource> Create(
84 ResourceProvider* resource_provider) { 85 ResourceProvider* resource_provider) {
85 return make_scoped_ptr(new PoolResource(resource_provider)); 86 return base::WrapUnique(new PoolResource(resource_provider));
86 } 87 }
87 void OnMemoryDump(base::trace_event::ProcessMemoryDump* pmd, 88 void OnMemoryDump(base::trace_event::ProcessMemoryDump* pmd,
88 const ResourceProvider* resource_provider, 89 const ResourceProvider* resource_provider,
89 bool is_free) const; 90 bool is_free) const;
90 91
91 uint64_t content_id() const { return content_id_; } 92 uint64_t content_id() const { return content_id_; }
92 void set_content_id(uint64_t content_id) { content_id_ = content_id; } 93 void set_content_id(uint64_t content_id) { content_id_ = content_id; }
93 94
94 base::TimeTicks last_usage() const { return last_usage_; } 95 base::TimeTicks last_usage() const { return last_usage_; }
95 void set_last_usage(base::TimeTicks time) { last_usage_ = time; } 96 void set_last_usage(base::TimeTicks time) { last_usage_ = time; }
96 97
97 private: 98 private:
98 explicit PoolResource(ResourceProvider* resource_provider) 99 explicit PoolResource(ResourceProvider* resource_provider)
99 : ScopedResource(resource_provider), content_id_(0) {} 100 : ScopedResource(resource_provider), content_id_(0) {}
100 uint64_t content_id_; 101 uint64_t content_id_;
101 base::TimeTicks last_usage_; 102 base::TimeTicks last_usage_;
102 }; 103 };
103 104
104 void DidFinishUsingResource(scoped_ptr<PoolResource> resource); 105 void DidFinishUsingResource(std::unique_ptr<PoolResource> resource);
105 void DeleteResource(scoped_ptr<PoolResource> resource); 106 void DeleteResource(std::unique_ptr<PoolResource> resource);
106 107
107 // Functions which manage periodic eviction of expired resources. 108 // Functions which manage periodic eviction of expired resources.
108 void ScheduleEvictExpiredResourcesIn(base::TimeDelta time_from_now); 109 void ScheduleEvictExpiredResourcesIn(base::TimeDelta time_from_now);
109 void EvictExpiredResources(); 110 void EvictExpiredResources();
110 void EvictResourcesNotUsedSince(base::TimeTicks time_limit); 111 void EvictResourcesNotUsedSince(base::TimeTicks time_limit);
111 bool HasEvictableResources() const; 112 bool HasEvictableResources() const;
112 base::TimeTicks GetUsageTimeForLRUResource() const; 113 base::TimeTicks GetUsageTimeForLRUResource() const;
113 114
114 ResourceProvider* resource_provider_; 115 ResourceProvider* resource_provider_;
115 bool use_gpu_memory_buffers_; 116 bool use_gpu_memory_buffers_;
116 size_t max_memory_usage_bytes_; 117 size_t max_memory_usage_bytes_;
117 size_t max_resource_count_; 118 size_t max_resource_count_;
118 size_t in_use_memory_usage_bytes_; 119 size_t in_use_memory_usage_bytes_;
119 size_t total_memory_usage_bytes_; 120 size_t total_memory_usage_bytes_;
120 size_t total_resource_count_; 121 size_t total_resource_count_;
121 122
122 // Holds most recently used resources at the front of the queue. 123 // Holds most recently used resources at the front of the queue.
123 using ResourceDeque = std::deque<scoped_ptr<PoolResource>>; 124 using ResourceDeque = std::deque<std::unique_ptr<PoolResource>>;
124 ResourceDeque unused_resources_; 125 ResourceDeque unused_resources_;
125 ResourceDeque busy_resources_; 126 ResourceDeque busy_resources_;
126 127
127 std::map<ResourceId, scoped_ptr<PoolResource>> in_use_resources_; 128 std::map<ResourceId, std::unique_ptr<PoolResource>> in_use_resources_;
128 129
129 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; 130 scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
130 bool evict_expired_resources_pending_; 131 bool evict_expired_resources_pending_;
131 base::TimeDelta resource_expiration_delay_; 132 base::TimeDelta resource_expiration_delay_;
132 133
133 base::WeakPtrFactory<ResourcePool> weak_ptr_factory_; 134 base::WeakPtrFactory<ResourcePool> weak_ptr_factory_;
134 135
135 DISALLOW_COPY_AND_ASSIGN(ResourcePool); 136 DISALLOW_COPY_AND_ASSIGN(ResourcePool);
136 }; 137 };
137 138
138 } // namespace cc 139 } // namespace cc
139 140
140 #endif // CC_RESOURCES_RESOURCE_POOL_H_ 141 #endif // CC_RESOURCES_RESOURCE_POOL_H_
OLDNEW
« no previous file with comments | « cc/resources/memory_history.cc ('k') | cc/resources/resource_pool.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698