| Index: cc/CCSingleThreadProxy.cpp | 
| diff --git a/cc/CCSingleThreadProxy.cpp b/cc/CCSingleThreadProxy.cpp | 
| index 0a52d64ba10f336e45e03085dc9fc46dd5f0e0ca..763d668935b22f59ac12c8ecf15a7a45ef6720e1 100644 | 
| --- a/cc/CCSingleThreadProxy.cpp | 
| +++ b/cc/CCSingleThreadProxy.cpp | 
| @@ -255,6 +255,12 @@ void CCSingleThreadProxy::postAnimationEventsToMainThreadOnImplThread(PassOwnPtr | 
| m_layerTreeHost->setAnimationEvents(events, wallClockTime); | 
| } | 
|  | 
| +void CCSingleThreadProxy::releaseContentsTexturesOnImplThread() | 
| +{ | 
| +    ASSERT(isImplThread()); | 
| +    m_layerTreeHost->reduceContentsTexturesMemoryOnImplThread(0, m_layerTreeHostImpl->resourceProvider()); | 
| +} | 
| + | 
| // Called by the legacy scheduling path (e.g. where render_widget does the scheduling) | 
| void CCSingleThreadProxy::compositeImmediately() | 
| { | 
| @@ -280,15 +286,23 @@ bool CCSingleThreadProxy::commitAndComposite() | 
| if (!m_layerTreeHost->initializeRendererIfNeeded()) | 
| return false; | 
|  | 
| -    if (m_layerTreeHostImpl->contentsTexturesPurged()) { | 
| -        m_layerTreeHost->unlinkAllContentTextures(); | 
| +    // Unlink any texture backings that were deleted | 
| +    CCPrioritizedTextureManager::BackingVector evictedContentsTexturesBackings; | 
| +    { | 
| +        DebugScopedSetImplThread implThread; | 
| +        m_layerTreeHost->getEvictedContentTexturesBackings(evictedContentsTexturesBackings); | 
| +    } | 
| +    m_layerTreeHost->unlinkEvictedContentTexturesBackings(evictedContentsTexturesBackings); | 
| +    { | 
| DebugScopedSetImplThreadAndMainThreadBlocked implAndMainBlocked; | 
| -        m_layerTreeHost->deleteUnlinkedTextures(); | 
| +        m_layerTreeHost->deleteEvictedContentTexturesBackings(); | 
| } | 
|  | 
| CCTextureUpdateQueue queue; | 
| m_layerTreeHost->updateLayers(queue, m_layerTreeHostImpl->memoryAllocationLimitBytes()); | 
| -    m_layerTreeHostImpl->resetContentsTexturesPurged(); | 
| + | 
| +    if (m_layerTreeHostImpl->contentsTexturesPurged()) | 
| +        m_layerTreeHostImpl->resetContentsTexturesPurged(); | 
|  | 
| m_layerTreeHost->willCommit(); | 
| doCommit(queue); | 
|  |