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

Unified Diff: cc/layer_tree_host_impl.cc

Issue 11640035: cc: Move updateDrawProperties to LayerTreeImpl (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove a TODO 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/layer_tree_host_impl.h ('k') | cc/layer_tree_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/layer_tree_host_impl.cc
diff --git a/cc/layer_tree_host_impl.cc b/cc/layer_tree_host_impl.cc
index 1339d8c6feeb4551ebfa47543c2a8f2b3d678225..e933e252c3f2b94a33e1668a2483e792c488584a 100644
--- a/cc/layer_tree_host_impl.cc
+++ b/cc/layer_tree_host_impl.cc
@@ -373,7 +373,7 @@ bool LayerTreeHostImpl::haveTouchEventHandlersAt(const gfx::Point& viewportPoint
// First find out which layer was hit from the saved list of visible layers
// in the most recent frame.
- LayerImpl* layerImpl = LayerTreeHostCommon::findLayerThatIsHitByPoint(deviceViewportPoint, m_renderSurfaceLayerList);
+ LayerImpl* layerImpl = LayerTreeHostCommon::findLayerThatIsHitByPoint(deviceViewportPoint, activeTree()->RenderSurfaceLayerList());
// Walk up the hierarchy and look for a layer with a touch event handler region that the given point hits.
for (; layerImpl; layerImpl = layerImpl->parent()) {
@@ -403,33 +403,17 @@ void LayerTreeHostImpl::updateDrawProperties()
if (!needsUpdateDrawProperties())
return;
- m_renderSurfaceLayerList.clear();
- m_needsUpdateDrawProperties = false;
-
- if (!rootLayer())
- return;
-
- if (!m_renderer) // For maxTextureSize.
+ if (!m_renderer) { // For maxTextureSize.
+ // This will get set if renderer gets initialized.
+ m_needsUpdateDrawProperties = false;
return;
-
- if (rootScrollLayer())
- rootScrollLayer()->setImplTransform(implTransform());
-
- {
- TRACE_EVENT0("cc", "LayerTreeHostImpl::calcDrawEtc");
- float pageScaleFactor = m_pinchZoomViewport.pageScaleFactor();
- LayerTreeHostCommon::calculateDrawProperties(rootLayer(), deviceViewportSize(), m_deviceScaleFactor, pageScaleFactor, rendererCapabilities().maxTextureSize, m_settings.canUseLCDText, m_renderSurfaceLayerList);
}
- // TODO(nduca): Move this to LayerTreeImpl
- // Note: pending tree calcDrawProperties must follow the active tree one,
- // as some properties are synced from active -> pending.
- if (pendingTree() && pendingTree()->RootLayer())
- {
- float pageScaleFactor = m_pinchZoomViewport.pageScaleFactor();
- LayerList dummyList;
- LayerTreeHostCommon::calculateDrawProperties(pendingTree()->RootLayer(), deviceViewportSize(), m_deviceScaleFactor, pageScaleFactor, rendererCapabilities().maxTextureSize, m_settings.canUseLCDText, dummyList);
- }
+ activeTree()->UpdateDrawProperties();
+ if (pendingTree())
+ pendingTree()->UpdateDrawProperties();
+
+ m_needsUpdateDrawProperties = false;
}
void LayerTreeHostImpl::FrameData::appendRenderPass(scoped_ptr<RenderPass> renderPass)
@@ -528,7 +512,6 @@ bool LayerTreeHostImpl::calculateRenderPasses(FrameData& frame)
{
DCHECK(frame.renderPasses.empty());
- updateDrawProperties();
if (!canDraw() || !rootLayer())
return false;
@@ -766,8 +749,9 @@ bool LayerTreeHostImpl::prepareToDraw(FrameData& frame)
m_tileManager->CheckForCompletedSetPixels();
activatePendingTreeIfNeeded();
+ updateDrawProperties();
- frame.renderSurfaceLayerList = &m_renderSurfaceLayerList;
+ frame.renderSurfaceLayerList = &activeTree()->RenderSurfaceLayerList();
frame.renderPasses.clear();
frame.renderPassesById.clear();
frame.willDrawLayers.clear();
@@ -1053,18 +1037,11 @@ void LayerTreeHostImpl::activatePendingTree()
m_pendingTree.reset();
m_client->onCanDrawStateChanged(canDraw());
m_client->onHasPendingTreeStateChanged(pendingTree());
-
- // TODO(nduca): Once render surface layer list moves to the tree so
- // that updateDrawProperties() affects both trees, this will be
- // unnecessary.
- setNeedsUpdateDrawProperties();
}
scoped_ptr<LayerImpl> LayerTreeHostImpl::detachLayerTree()
{
scoped_ptr<LayerImpl> layer = m_activeTree->DetachLayerTree();
- m_renderSurfaceLayerList.clear();
- setNeedsUpdateDrawProperties();
return layer.Pass();
}
@@ -1120,6 +1097,7 @@ bool LayerTreeHostImpl::initializeRenderer(scoped_ptr<OutputSurface> outputSurfa
if (!m_renderer)
return false;
+ setNeedsUpdateDrawProperties();
m_resourceProvider = resourceProvider.Pass();
m_outputSurface = outputSurface.Pass();
@@ -1230,7 +1208,7 @@ void LayerTreeHostImpl::setNeedsRedraw()
bool LayerTreeHostImpl::ensureRenderSurfaceLayerList()
{
updateDrawProperties();
- return m_renderSurfaceLayerList.size();
+ return activeTree()->RenderSurfaceLayerList().size();
}
InputHandlerClient::ScrollStatus LayerTreeHostImpl::scrollBegin(gfx::Point viewportPoint, InputHandlerClient::ScrollInputType type)
@@ -1247,7 +1225,7 @@ InputHandlerClient::ScrollStatus LayerTreeHostImpl::scrollBegin(gfx::Point viewp
// First find out which layer was hit from the saved list of visible layers
// in the most recent frame.
- LayerImpl* layerImpl = LayerTreeHostCommon::findLayerThatIsHitByPoint(deviceViewportPoint, m_renderSurfaceLayerList);
+ LayerImpl* layerImpl = LayerTreeHostCommon::findLayerThatIsHitByPoint(deviceViewportPoint, activeTree()->RenderSurfaceLayerList());
// Walk up the hierarchy and look for a scrollable layer.
LayerImpl* potentiallyScrollingLayerImpl = 0;
@@ -1636,19 +1614,11 @@ void LayerTreeHostImpl::sendDidLoseOutputSurfaceRecursive(LayerImpl* current)
sendDidLoseOutputSurfaceRecursive(current->children()[i]);
}
-static void clearRenderSurfacesOnLayerImplRecursive(LayerImpl* current)
-{
- DCHECK(current);
- for (size_t i = 0; i < current->children().size(); ++i)
- clearRenderSurfacesOnLayerImplRecursive(current->children()[i]);
- current->clearRenderSurface();
-}
-
void LayerTreeHostImpl::clearRenderSurfaces()
{
- clearRenderSurfacesOnLayerImplRecursive(rootLayer());
- m_renderSurfaceLayerList.clear();
- setNeedsUpdateDrawProperties();
+ activeTree()->ClearRenderSurfaces();
+ if (pendingTree())
+ pendingTree()->ClearRenderSurfaces();
}
std::string LayerTreeHostImpl::layerTreeAsText() const
« no previous file with comments | « cc/layer_tree_host_impl.h ('k') | cc/layer_tree_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698