OLD | NEW |
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 "config.h" | 5 #include "config.h" |
6 | 6 |
7 #include "CCPrioritizedTexture.h" | 7 #include "CCPrioritizedTexture.h" |
8 | 8 |
9 #include "CCPrioritizedTextureManager.h" | 9 #include "CCPrioritizedTextureManager.h" |
10 #include "CCPriorityCalculator.h" | 10 #include "CCPriorityCalculator.h" |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
122 { | 122 { |
123 setDimensions(IntSize(), GraphicsContext3D::RGBA); | 123 setDimensions(IntSize(), GraphicsContext3D::RGBA); |
124 setIsSelfManaged(true); | 124 setIsSelfManaged(true); |
125 m_bytes = bytes; | 125 m_bytes = bytes; |
126 } | 126 } |
127 | 127 |
128 CCPrioritizedTexture::Backing::Backing(unsigned id, CCResourceProvider* resource
Provider, IntSize size, GC3Denum format) | 128 CCPrioritizedTexture::Backing::Backing(unsigned id, CCResourceProvider* resource
Provider, IntSize size, GC3Denum format) |
129 : CCTexture(id, size, format) | 129 : CCTexture(id, size, format) |
130 , m_owner(0) | 130 , m_owner(0) |
131 , m_priorityAtLastPriorityUpdate(CCPriorityCalculator::lowestPriority()) | 131 , m_priorityAtLastPriorityUpdate(CCPriorityCalculator::lowestPriority()) |
132 , m_ownerExistedAtLastPriorityUpdate(false) | |
133 , m_wasAbovePriorityCutoffAtLastPriorityUpdate(false) | 132 , m_wasAbovePriorityCutoffAtLastPriorityUpdate(false) |
| 133 , m_inDrawingImplTree(false) |
134 , m_resourceHasBeenDeleted(false) | 134 , m_resourceHasBeenDeleted(false) |
135 #ifndef NDEBUG | 135 #ifndef NDEBUG |
136 , m_resourceProvider(resourceProvider) | 136 , m_resourceProvider(resourceProvider) |
137 #endif | 137 #endif |
138 { | 138 { |
139 } | 139 } |
140 | 140 |
141 CCPrioritizedTexture::Backing::~Backing() | 141 CCPrioritizedTexture::Backing::~Backing() |
142 { | 142 { |
143 ASSERT(!m_owner); | 143 ASSERT(!m_owner); |
(...skipping 12 matching lines...) Expand all Loading... |
156 setId(0); | 156 setId(0); |
157 m_resourceHasBeenDeleted = true; | 157 m_resourceHasBeenDeleted = true; |
158 } | 158 } |
159 | 159 |
160 bool CCPrioritizedTexture::Backing::resourceHasBeenDeleted() const | 160 bool CCPrioritizedTexture::Backing::resourceHasBeenDeleted() const |
161 { | 161 { |
162 ASSERT(CCProxy::isImplThread()); | 162 ASSERT(CCProxy::isImplThread()); |
163 return m_resourceHasBeenDeleted; | 163 return m_resourceHasBeenDeleted; |
164 } | 164 } |
165 | 165 |
| 166 bool CCPrioritizedTexture::Backing::canBeRecycled() const |
| 167 { |
| 168 ASSERT(CCProxy::isImplThread() && CCProxy::isMainThreadBlocked()); |
| 169 return !m_wasAbovePriorityCutoffAtLastPriorityUpdate && !m_inDrawingImplTree
; |
| 170 } |
| 171 |
166 void CCPrioritizedTexture::Backing::updatePriority() | 172 void CCPrioritizedTexture::Backing::updatePriority() |
167 { | 173 { |
168 ASSERT(CCProxy::isImplThread() && CCProxy::isMainThreadBlocked()); | 174 ASSERT(CCProxy::isImplThread() && CCProxy::isMainThreadBlocked()); |
169 if (m_owner) { | 175 if (m_owner) { |
170 m_ownerExistedAtLastPriorityUpdate = true; | |
171 m_priorityAtLastPriorityUpdate = m_owner->requestPriority(); | 176 m_priorityAtLastPriorityUpdate = m_owner->requestPriority(); |
172 m_wasAbovePriorityCutoffAtLastPriorityUpdate = m_owner->isAbovePriorityC
utoff(); | 177 m_wasAbovePriorityCutoffAtLastPriorityUpdate = m_owner->isAbovePriorityC
utoff(); |
173 } else { | 178 } else { |
174 m_ownerExistedAtLastPriorityUpdate = false; | |
175 m_priorityAtLastPriorityUpdate = CCPriorityCalculator::lowestPriority(); | 179 m_priorityAtLastPriorityUpdate = CCPriorityCalculator::lowestPriority(); |
176 m_wasAbovePriorityCutoffAtLastPriorityUpdate = false; | 180 m_wasAbovePriorityCutoffAtLastPriorityUpdate = false; |
177 } | 181 } |
178 } | 182 } |
179 | 183 |
| 184 void CCPrioritizedTexture::Backing::updateInDrawingImplTree() |
| 185 { |
| 186 ASSERT(CCProxy::isImplThread() && CCProxy::isMainThreadBlocked()); |
| 187 m_inDrawingImplTree = !!owner(); |
| 188 if (!m_inDrawingImplTree) |
| 189 ASSERT(m_priorityAtLastPriorityUpdate == CCPriorityCalculator::lowestPri
ority()); |
| 190 } |
| 191 |
180 } // namespace cc | 192 } // namespace cc |
OLD | NEW |