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

Side by Side Diff: cc/prioritized_resource.cc

Issue 11411251: Use a lock to deal with concurrent access to the m_evictedBackings (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Incorporate review feedback Created 8 years 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 | Annotate | Revision Log
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 #include "cc/prioritized_resource.h" 5 #include "cc/prioritized_resource.h"
6 6
7 #include "cc/platform_color.h" 7 #include "cc/platform_color.h"
8 #include "cc/prioritized_resource_manager.h" 8 #include "cc/prioritized_resource_manager.h"
9 #include "cc/priority_calculator.h" 9 #include "cc/priority_calculator.h"
10 #include "cc/proxy.h" 10 #include "cc/proxy.h"
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 100
101 // The component order may be bgra if we uploaded bgra pixels to rgba 101 // The component order may be bgra if we uploaded bgra pixels to rgba
102 // texture. Mark contents as swizzled if image component order is 102 // texture. Mark contents as swizzled if image component order is
103 // different than texture format. 103 // different than texture format.
104 m_contentsSwizzled = !PlatformColor::sameComponentOrder(m_format); 104 m_contentsSwizzled = !PlatformColor::sameComponentOrder(m_format);
105 } 105 }
106 106
107 void PrioritizedResource::link(Backing* backing) 107 void PrioritizedResource::link(Backing* backing)
108 { 108 {
109 DCHECK(backing); 109 DCHECK(backing);
110 CHECK(!backing->m_owner); 110 DCHECK(!backing->m_owner);
111 CHECK(!m_backing); 111 DCHECK(!m_backing);
112 112
113 m_backing = backing; 113 m_backing = backing;
114 m_backing->m_owner = this; 114 m_backing->m_owner = this;
115 } 115 }
116 116
117 void PrioritizedResource::unlink() 117 void PrioritizedResource::unlink()
118 { 118 {
119 DCHECK(m_backing); 119 DCHECK(m_backing);
120 CHECK(m_backing->m_owner == this); 120 DCHECK(m_backing->m_owner == this);
121 121
122 m_backing->m_owner = 0; 122 m_backing->m_owner = 0;
123 m_backing = 0; 123 m_backing = 0;
124 } 124 }
125 125
126 void PrioritizedResource::setToSelfManagedMemoryPlaceholder(size_t bytes) 126 void PrioritizedResource::setToSelfManagedMemoryPlaceholder(size_t bytes)
127 { 127 {
128 setDimensions(gfx::Size(), GL_RGBA); 128 setDimensions(gfx::Size(), GL_RGBA);
129 setIsSelfManaged(true); 129 setIsSelfManaged(true);
130 m_bytes = bytes; 130 m_bytes = bytes;
131 } 131 }
132 132
133 PrioritizedResource::Backing::Backing(unsigned id, ResourceProvider* resourcePro vider, gfx::Size size, GLenum format) 133 PrioritizedResource::Backing::Backing(unsigned id, ResourceProvider* resourcePro vider, gfx::Size size, GLenum format)
134 : Resource(id, size, format) 134 : Resource(id, size, format)
135 , m_owner(0) 135 , m_owner(0)
136 , m_priorityAtLastPriorityUpdate(PriorityCalculator::lowestPriority()) 136 , m_priorityAtLastPriorityUpdate(PriorityCalculator::lowestPriority())
137 , m_wasAbovePriorityCutoffAtLastPriorityUpdate(false) 137 , m_wasAbovePriorityCutoffAtLastPriorityUpdate(false)
138 , m_inDrawingImplTree(false) 138 , m_inDrawingImplTree(false)
139 , m_resourceHasBeenDeleted(false) 139 , m_resourceHasBeenDeleted(false)
140 , m_inMainThreadEvictedList(false)
141 #ifndef NDEBUG 140 #ifndef NDEBUG
142 , m_resourceProvider(resourceProvider) 141 , m_resourceProvider(resourceProvider)
143 #endif 142 #endif
144 { 143 {
145 } 144 }
146 145
147 PrioritizedResource::Backing::~Backing() 146 PrioritizedResource::Backing::~Backing()
148 { 147 {
149 DCHECK(!m_owner); 148 DCHECK(!m_owner);
150 DCHECK(m_resourceHasBeenDeleted); 149 DCHECK(m_resourceHasBeenDeleted);
151 CHECK(!m_inMainThreadEvictedList);
152 } 150 }
153 151
154 void PrioritizedResource::Backing::deleteResource(ResourceProvider* resourceProv ider) 152 void PrioritizedResource::Backing::deleteResource(ResourceProvider* resourceProv ider)
155 { 153 {
156 DCHECK(!proxy() || proxy()->isImplThread()); 154 DCHECK(!proxy() || proxy()->isImplThread());
157 DCHECK(!m_resourceHasBeenDeleted); 155 DCHECK(!m_resourceHasBeenDeleted);
158 #ifndef NDEBUG 156 #ifndef NDEBUG
159 DCHECK(resourceProvider == m_resourceProvider); 157 DCHECK(resourceProvider == m_resourceProvider);
160 #endif 158 #endif
161 159
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 } 202 }
205 203
206 const Proxy* PrioritizedResource::Backing::proxy() const 204 const Proxy* PrioritizedResource::Backing::proxy() const
207 { 205 {
208 if (!m_owner || !m_owner->resourceManager()) 206 if (!m_owner || !m_owner->resourceManager())
209 return 0; 207 return 0;
210 return m_owner->resourceManager()->proxyForDebug(); 208 return m_owner->resourceManager()->proxyForDebug();
211 } 209 }
212 210
213 } // namespace cc 211 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698