Index: cc/CCRenderSurface.cpp |
diff --git a/cc/CCRenderSurface.cpp b/cc/CCRenderSurface.cpp |
index dfbeeab66001f516db466d632cc74f2e597ebbf3..f4e1d8d6528044ae4ac969a764313e37332b386f 100644 |
--- a/cc/CCRenderSurface.cpp |
+++ b/cc/CCRenderSurface.cpp |
@@ -11,6 +11,7 @@ |
#include "base/stringprintf.h" |
#include "CCDamageTracker.h" |
#include "CCDebugBorderDrawQuad.h" |
+#include "CCDelegatedRendererLayerImpl.h" |
#include "CCLayerImpl.h" |
#include "CCMathUtil.h" |
#include "CCQuadSink.h" |
@@ -144,6 +145,19 @@ bool CCRenderSurface::surfacePropertyChangedOnlyFromDescendant() const |
return m_surfacePropertyChanged && !m_owningLayer->layerPropertyChanged(); |
} |
+void CCRenderSurface::addContributingDelegatedRenderPassLayer(CCLayerImpl* layer) |
+{ |
+ ASSERT(m_layerList.contains(layer)); |
+ CCDelegatedRendererLayerImpl* delegatedRendererLayer = static_cast<CCDelegatedRendererLayerImpl*>(layer); |
+ m_contributingDelegatedRenderPassLayerList.append(delegatedRendererLayer); |
+} |
+ |
+void CCRenderSurface::clearLayerLists() |
+{ |
+ m_layerList.clear(); |
+ m_contributingDelegatedRenderPassLayerList.clear(); |
+} |
+ |
static inline IntRect computeClippedRectInTarget(const CCLayerImpl* owningLayer) |
{ |
ASSERT(owningLayer->parent()); |
@@ -174,6 +188,9 @@ CCRenderPass::Id CCRenderSurface::renderPassId() |
void CCRenderSurface::appendRenderPasses(CCRenderPassSink& passSink) |
{ |
+ for (size_t i = 0; i < m_contributingDelegatedRenderPassLayerList.size(); ++i) |
+ m_contributingDelegatedRenderPassLayerList[i]->appendContributingRenderPasses(passSink); |
+ |
OwnPtr<CCRenderPass> pass = CCRenderPass::create(renderPassId(), m_contentRect, m_screenSpaceTransform); |
pass->setDamageRect(m_damageTracker->currentDamageRect()); |
pass->setFilters(m_owningLayer->filters()); |