| Index: cc/layer_impl.cc
|
| diff --git a/cc/layer_impl.cc b/cc/layer_impl.cc
|
| index c3aa7930a9f38aa0a0a39b5209729469b13befd3..f9102eba0562bd11117489d322e5b5c6338c3c67 100644
|
| --- a/cc/layer_impl.cc
|
| +++ b/cc/layer_impl.cc
|
| @@ -36,6 +36,7 @@ LayerImpl::LayerImpl(LayerTreeImpl* treeImpl, int id)
|
| , m_shouldScrollOnMainThread(false)
|
| , m_haveWheelEventHandlers(false)
|
| , m_backgroundColor(0)
|
| + , m_stackingOrderChanged(false)
|
| , m_doubleSided(true)
|
| , m_layerPropertyChanged(false)
|
| , m_layerSurfacePropertyChanged(false)
|
| @@ -81,6 +82,12 @@ void LayerImpl::addChild(scoped_ptr<LayerImpl> child)
|
| layerTreeImpl()->SetNeedsUpdateDrawProperties();
|
| }
|
|
|
| +LayerImpl* LayerImpl::childAt(size_t index) const
|
| +{
|
| + DCHECK_LT(index, m_children.size());
|
| + return m_children[index];
|
| +}
|
| +
|
| scoped_ptr<LayerImpl> LayerImpl::removeChild(LayerImpl* child)
|
| {
|
| for (ScopedPtrVector<LayerImpl>::iterator it = m_children.begin(); it != m_children.end(); ++it) {
|
| @@ -304,6 +311,66 @@ bool LayerImpl::areVisibleResourcesReady() const
|
| return true;
|
| }
|
|
|
| +scoped_ptr<LayerImpl> LayerImpl::createLayerImpl(LayerTreeImpl* treeImpl)
|
| +{
|
| + return LayerImpl::create(treeImpl, m_layerId);
|
| +}
|
| +
|
| +void LayerImpl::pushPropertiesTo(LayerImpl* layer)
|
| +{
|
| + layer->setAnchorPoint(m_anchorPoint);
|
| + layer->setAnchorPointZ(m_anchorPointZ);
|
| + layer->setBackgroundColor(m_backgroundColor);
|
| + layer->setBounds(m_bounds);
|
| + layer->setContentBounds(contentBounds());
|
| + layer->setContentsScale(contentsScaleX(), contentsScaleY());
|
| + layer->setDebugName(m_debugName);
|
| + layer->setDoubleSided(m_doubleSided);
|
| + layer->setDrawCheckerboardForMissingTiles(m_drawCheckerboardForMissingTiles);
|
| + layer->setForceRenderSurface(m_forceRenderSurface);
|
| + layer->setDrawsContent(drawsContent());
|
| + layer->setFilters(filters());
|
| + layer->setFilter(filter());
|
| + layer->setBackgroundFilters(backgroundFilters());
|
| + layer->setMasksToBounds(m_masksToBounds);
|
| + layer->setShouldScrollOnMainThread(m_shouldScrollOnMainThread);
|
| + layer->setHaveWheelEventHandlers(m_haveWheelEventHandlers);
|
| + layer->setNonFastScrollableRegion(m_nonFastScrollableRegion);
|
| + layer->setTouchEventHandlerRegion(m_touchEventHandlerRegion);
|
| + layer->setContentsOpaque(m_contentsOpaque);
|
| + if (!opacityIsAnimating())
|
| + layer->setOpacity(m_opacity);
|
| + layer->setPosition(m_position);
|
| + layer->setIsContainerForFixedPositionLayers(m_isContainerForFixedPositionLayers);
|
| + layer->setFixedToContainerLayer(m_fixedToContainerLayer);
|
| + layer->setPreserves3D(preserves3D());
|
| + layer->setUseParentBackfaceVisibility(m_useParentBackfaceVisibility);
|
| + layer->setSublayerTransform(m_sublayerTransform);
|
| + if (!transformIsAnimating())
|
| + layer->setTransform(m_transform);
|
| +
|
| + layer->setScrollable(m_scrollable);
|
| + layer->setScrollOffset(m_scrollOffset);
|
| + layer->setMaxScrollOffset(m_maxScrollOffset);
|
| +
|
| + // If the main thread commits multiple times before the impl thread actually draws, then damage tracking
|
| + // will become incorrect if we simply clobber the updateRect here. The LayerImpl's updateRect needs to
|
| + // accumulate (i.e. union) any update changes that have occurred on the main thread.
|
| + m_updateRect.Union(layer->updateRect());
|
| + layer->setUpdateRect(m_updateRect);
|
| +
|
| + layer->setScrollDelta(layer->scrollDelta() - layer->sentScrollDelta());
|
| + layer->setSentScrollDelta(gfx::Vector2d());
|
| +
|
| + layer->setStackingOrderChanged(m_stackingOrderChanged);
|
| +
|
| + m_layerAnimationController->pushAnimationUpdatesTo(layer->layerAnimationController());
|
| +
|
| + // Reset any state that should be cleared for the next update.
|
| + m_stackingOrderChanged = false;
|
| + m_updateRect = gfx::RectF();
|
| +}
|
| +
|
| std::string LayerImpl::indentString(int indent)
|
| {
|
| std::string str;
|
| @@ -407,9 +474,10 @@ base::DictionaryValue* LayerImpl::layerTreeAsJson() const
|
|
|
| void LayerImpl::setStackingOrderChanged(bool stackingOrderChanged)
|
| {
|
| - // We don't need to store this flag; we only need to track that the change occurred.
|
| - if (stackingOrderChanged)
|
| + if (stackingOrderChanged) {
|
| + m_stackingOrderChanged = true;
|
| noteLayerPropertyChangedForSubtree();
|
| + }
|
| }
|
|
|
| bool LayerImpl::layerSurfacePropertyChanged() const
|
| @@ -562,6 +630,11 @@ scoped_ptr<LayerImpl> LayerImpl::takeReplicaLayer()
|
| return m_replicaLayer.Pass();
|
| }
|
|
|
| +ScrollbarLayerImpl* LayerImpl::toScrollbarLayer()
|
| +{
|
| + return 0;
|
| +}
|
| +
|
| void LayerImpl::setDrawsContent(bool drawsContent)
|
| {
|
| if (m_drawsContent == drawsContent)
|
| @@ -877,11 +950,15 @@ void LayerImpl::didBecomeActive()
|
| void LayerImpl::setHorizontalScrollbarLayer(ScrollbarLayerImpl* scrollbarLayer)
|
| {
|
| m_horizontalScrollbarLayer = scrollbarLayer;
|
| + if (m_horizontalScrollbarLayer)
|
| + m_horizontalScrollbarLayer->setScrollLayerId(id());
|
| }
|
|
|
| void LayerImpl::setVerticalScrollbarLayer(ScrollbarLayerImpl* scrollbarLayer)
|
| {
|
| m_verticalScrollbarLayer = scrollbarLayer;
|
| + if (m_verticalScrollbarLayer)
|
| + m_verticalScrollbarLayer->setScrollLayerId(id());
|
| }
|
|
|
| } // namespace cc
|
|
|