Index: cc/prioritized_texture_manager.cc |
diff --git a/cc/prioritized_texture_manager.cc b/cc/prioritized_texture_manager.cc |
index 1b18be2aa5ef4e8a80b3a1e10d03dfb7194a21c5..4cae7aafc5183c4ef1637f39445b74219c59148a 100644 |
--- a/cc/prioritized_texture_manager.cc |
+++ b/cc/prioritized_texture_manager.cc |
@@ -17,8 +17,9 @@ using namespace std; |
namespace cc { |
-CCPrioritizedTextureManager::CCPrioritizedTextureManager(size_t maxMemoryLimitBytes, int, int pool) |
- : m_maxMemoryLimitBytes(maxMemoryLimitBytes) |
+CCPrioritizedTextureManager::CCPrioritizedTextureManager(size_t maxMemoryLimitBytes, int, int pool, CCProxy* proxy) |
+ : m_proxy(proxy) |
+ , m_maxMemoryLimitBytes(maxMemoryLimitBytes) |
, m_memoryUseBytes(0) |
, m_memoryAboveCutoffBytes(0) |
, m_memoryAvailableBytes(0) |
@@ -42,7 +43,7 @@ CCPrioritizedTextureManager::~CCPrioritizedTextureManager() |
void CCPrioritizedTextureManager::prioritizeTextures() |
{ |
TRACE_EVENT0("cc", "CCPrioritizedTextureManager::prioritizeTextures"); |
- DCHECK(CCProxy::isMainThread()); |
+ DCHECK(m_proxy->isMainThread()); |
// Sorting textures in this function could be replaced by a slightly |
// modified O(n) quick-select to partition textures rather than |
@@ -102,7 +103,7 @@ void CCPrioritizedTextureManager::prioritizeTextures() |
void CCPrioritizedTextureManager::pushTexturePrioritiesToBackings() |
{ |
TRACE_EVENT0("cc", "CCPrioritizedTextureManager::pushTexturePrioritiesToBackings"); |
- DCHECK(CCProxy::isImplThread() && CCProxy::isMainThreadBlocked()); |
+ DCHECK(m_proxy->isImplThread() && m_proxy->isMainThreadBlocked()); |
assertInvariants(); |
for (BackingList::iterator it = m_backings.begin(); it != m_backings.end(); ++it) |
@@ -114,7 +115,7 @@ void CCPrioritizedTextureManager::pushTexturePrioritiesToBackings() |
void CCPrioritizedTextureManager::updateBackingsInDrawingImplTree() |
{ |
TRACE_EVENT0("cc", "CCPrioritizedTextureManager::updateBackingsInDrawingImplTree"); |
- DCHECK(CCProxy::isImplThread() && CCProxy::isMainThreadBlocked()); |
+ DCHECK(m_proxy->isImplThread() && m_proxy->isMainThreadBlocked()); |
assertInvariants(); |
for (BackingList::iterator it = m_backings.begin(); it != m_backings.end(); ++it) { |
@@ -128,7 +129,7 @@ void CCPrioritizedTextureManager::updateBackingsInDrawingImplTree() |
void CCPrioritizedTextureManager::sortBackings() |
{ |
TRACE_EVENT0("cc", "CCPrioritizedTextureManager::sortBackings"); |
- DCHECK(CCProxy::isImplThread()); |
+ DCHECK(m_proxy->isImplThread()); |
// Put backings in eviction/recycling order. |
m_backings.sort(compareBackings); |
@@ -137,7 +138,7 @@ void CCPrioritizedTextureManager::sortBackings() |
void CCPrioritizedTextureManager::clearPriorities() |
{ |
- DCHECK(CCProxy::isMainThread()); |
+ DCHECK(m_proxy->isMainThread()); |
for (TextureSet::iterator it = m_textures.begin(); it != m_textures.end(); ++it) { |
// FIXME: We should remove this and just set all priorities to |
// CCPriorityCalculator::lowestPriority() once we have priorities |
@@ -149,7 +150,7 @@ void CCPrioritizedTextureManager::clearPriorities() |
bool CCPrioritizedTextureManager::requestLate(CCPrioritizedTexture* texture) |
{ |
- DCHECK(CCProxy::isMainThread()); |
+ DCHECK(m_proxy->isMainThread()); |
// This is already above cutoff, so don't double count it's memory below. |
if (texture->isAbovePriorityCutoff()) |
@@ -169,7 +170,7 @@ bool CCPrioritizedTextureManager::requestLate(CCPrioritizedTexture* texture) |
void CCPrioritizedTextureManager::acquireBackingTextureIfNeeded(CCPrioritizedTexture* texture, CCResourceProvider* resourceProvider) |
{ |
- DCHECK(CCProxy::isImplThread() && CCProxy::isMainThreadBlocked()); |
+ DCHECK(m_proxy->isImplThread() && m_proxy->isMainThreadBlocked()); |
DCHECK(!texture->isSelfManaged()); |
DCHECK(texture->isAbovePriorityCutoff()); |
if (texture->backing() || !texture->isAbovePriorityCutoff()) |
@@ -209,7 +210,7 @@ void CCPrioritizedTextureManager::acquireBackingTextureIfNeeded(CCPrioritizedTex |
bool CCPrioritizedTextureManager::evictBackingsToReduceMemory(size_t limitBytes, EvictionPriorityPolicy evictionPolicy, CCResourceProvider* resourceProvider) |
{ |
- DCHECK(CCProxy::isImplThread()); |
+ DCHECK(m_proxy->isImplThread()); |
if (memoryUseBytes() <= limitBytes) |
return false; |
@@ -227,7 +228,7 @@ bool CCPrioritizedTextureManager::evictBackingsToReduceMemory(size_t limitBytes, |
void CCPrioritizedTextureManager::reduceMemory(CCResourceProvider* resourceProvider) |
{ |
- DCHECK(CCProxy::isImplThread() && CCProxy::isMainThreadBlocked()); |
+ DCHECK(m_proxy->isImplThread() && m_proxy->isMainThreadBlocked()); |
evictBackingsToReduceMemory(m_memoryAvailableBytes, RespectManagerPriorityCutoff, resourceProvider); |
DCHECK(memoryUseBytes() <= maxMemoryLimitBytes()); |
@@ -259,14 +260,14 @@ void CCPrioritizedTextureManager::reduceMemory(CCResourceProvider* resourceProvi |
void CCPrioritizedTextureManager::clearAllMemory(CCResourceProvider* resourceProvider) |
{ |
- DCHECK(CCProxy::isImplThread() && CCProxy::isMainThreadBlocked()); |
+ DCHECK(m_proxy->isImplThread() && m_proxy->isMainThreadBlocked()); |
DCHECK(resourceProvider); |
evictBackingsToReduceMemory(0, DoNotRespectManagerPriorityCutoff, resourceProvider); |
} |
bool CCPrioritizedTextureManager::reduceMemoryOnImplThread(size_t limitBytes, CCResourceProvider* resourceProvider) |
{ |
- DCHECK(CCProxy::isImplThread()); |
+ DCHECK(m_proxy->isImplThread()); |
DCHECK(resourceProvider); |
// If we are in the process of uploading a new frame then the backings at the very end of |
// the list are not sorted by priority. Sort them before doing the eviction. |
@@ -277,14 +278,14 @@ bool CCPrioritizedTextureManager::reduceMemoryOnImplThread(size_t limitBytes, CC |
void CCPrioritizedTextureManager::getEvictedBackings(BackingList& evictedBackings) |
{ |
- DCHECK(CCProxy::isImplThread()); |
+ DCHECK(m_proxy->isImplThread()); |
evictedBackings.clear(); |
evictedBackings.insert(evictedBackings.begin(), m_evictedBackings.begin(), m_evictedBackings.end()); |
} |
void CCPrioritizedTextureManager::unlinkEvictedBackings(const BackingList& evictedBackings) |
{ |
- DCHECK(CCProxy::isMainThread()); |
+ DCHECK(m_proxy->isMainThread()); |
for (BackingList::const_iterator it = evictedBackings.begin(); it != evictedBackings.end(); ++it) { |
CCPrioritizedTexture::Backing* backing = (*it); |
if (backing->owner()) |
@@ -294,7 +295,7 @@ void CCPrioritizedTextureManager::unlinkEvictedBackings(const BackingList& evict |
void CCPrioritizedTextureManager::deleteUnlinkedEvictedBackings() |
{ |
- DCHECK(CCProxy::isMainThread() || (CCProxy::isImplThread() && CCProxy::isMainThreadBlocked())); |
+ DCHECK(m_proxy->isMainThread() || (m_proxy->isImplThread() && m_proxy->isMainThreadBlocked())); |
BackingList newEvictedBackings; |
for (BackingList::const_iterator it = m_evictedBackings.begin(); it != m_evictedBackings.end(); ++it) { |
CCPrioritizedTexture::Backing* backing = (*it); |
@@ -317,7 +318,7 @@ bool CCPrioritizedTextureManager::linkedEvictedBackingsExist() const |
void CCPrioritizedTextureManager::registerTexture(CCPrioritizedTexture* texture) |
{ |
- DCHECK(CCProxy::isMainThread()); |
+ DCHECK(m_proxy->isMainThread()); |
DCHECK(texture); |
DCHECK(!texture->textureManager()); |
DCHECK(!texture->backing()); |
@@ -330,7 +331,7 @@ void CCPrioritizedTextureManager::registerTexture(CCPrioritizedTexture* texture) |
void CCPrioritizedTextureManager::unregisterTexture(CCPrioritizedTexture* texture) |
{ |
- DCHECK(CCProxy::isMainThread() || (CCProxy::isImplThread() && CCProxy::isMainThreadBlocked())); |
+ DCHECK(m_proxy->isMainThread() || (m_proxy->isImplThread() && m_proxy->isMainThreadBlocked())); |
DCHECK(texture); |
DCHECK(ContainsKey(m_textures, texture)); |
@@ -342,14 +343,14 @@ void CCPrioritizedTextureManager::unregisterTexture(CCPrioritizedTexture* textur |
void CCPrioritizedTextureManager::returnBackingTexture(CCPrioritizedTexture* texture) |
{ |
- DCHECK(CCProxy::isMainThread() || (CCProxy::isImplThread() && CCProxy::isMainThreadBlocked())); |
+ DCHECK(m_proxy->isMainThread() || (m_proxy->isImplThread() && m_proxy->isMainThreadBlocked())); |
if (texture->backing()) |
texture->unlink(); |
} |
CCPrioritizedTexture::Backing* CCPrioritizedTextureManager::createBacking(IntSize size, GLenum format, CCResourceProvider* resourceProvider) |
{ |
- DCHECK(CCProxy::isImplThread() && CCProxy::isMainThreadBlocked()); |
+ DCHECK(m_proxy->isImplThread() && m_proxy->isMainThreadBlocked()); |
DCHECK(resourceProvider); |
CCResourceProvider::ResourceId resourceId = resourceProvider->createResource(m_pool, size, format, CCResourceProvider::TextureUsageAny); |
CCPrioritizedTexture::Backing* backing = new CCPrioritizedTexture::Backing(resourceId, resourceProvider, size, format); |
@@ -359,7 +360,7 @@ CCPrioritizedTexture::Backing* CCPrioritizedTextureManager::createBacking(IntSiz |
void CCPrioritizedTextureManager::evictFirstBackingResource(CCResourceProvider* resourceProvider) |
{ |
- DCHECK(CCProxy::isImplThread()); |
+ DCHECK(m_proxy->isImplThread()); |
DCHECK(resourceProvider); |
DCHECK(!m_backings.empty()); |
CCPrioritizedTexture::Backing* backing = m_backings.front(); |
@@ -377,7 +378,7 @@ void CCPrioritizedTextureManager::evictFirstBackingResource(CCResourceProvider* |
void CCPrioritizedTextureManager::assertInvariants() |
{ |
#ifndef NDEBUG |
- DCHECK(CCProxy::isImplThread() && CCProxy::isMainThreadBlocked()); |
+ DCHECK(m_proxy->isImplThread() && m_proxy->isMainThreadBlocked()); |
// If we hit any of these asserts, there is a bug in this class. To see |
// where the bug is, call this function at the beginning and end of |