Ignore:
Timestamp:
Sep 26, 2013, 11:13:00 AM (12 years ago)
Author:
[email protected]
Message:

Unreviewed, rolling out r156451.
http://trac.webkit.org/changeset/156451
https://bugs.webkit.org/show_bug.cgi?id=121965

Broke two fast/multicol tests. (Requested by kling on
#webkit).

Source/WebCore:

  • rendering/FlowThreadController.cpp:

(WebCore::FlowThreadController::updateRenderFlowThreadLayersIfNeeded):

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::propagateStyleToAnonymousChildren):

  • rendering/RenderFlowThread.cpp:

(WebCore::RenderFlowThread::layout):
(WebCore::RenderFlowThread::regionForCompositedLayer):
(WebCore::RenderFlowThread::updateRegionForRenderLayer):
(WebCore::RenderFlowThread::updateLayerToRegionMappings):

  • rendering/RenderFlowThread.h:
  • rendering/RenderGeometryMap.cpp:
  • rendering/RenderGeometryMap.h:
  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::calculateLayerBounds):

  • rendering/RenderLayer.h:
  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::shouldClipCompositedBounds):
(WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):

  • rendering/RenderLayerBacking.h:
  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::computeCompositingRequirements):
(WebCore::RenderLayerCompositor::rebuildCompositingLayerTree):
(WebCore::RenderLayerCompositor::canBeComposited):
(WebCore::RenderLayerCompositor::requiresCompositingForIndirectReason):

  • rendering/RenderLayerCompositor.h:
  • rendering/RenderMultiColumnSet.cpp:
  • rendering/RenderMultiColumnSet.h:
  • rendering/RenderRegion.cpp:

(WebCore::RenderRegion::setRequiresLayerForCompositing):

  • rendering/RenderRegion.h:
  • rendering/RenderRegionSet.h:
  • rendering/RenderTreeAsText.cpp:

(WebCore::writeLayers):

LayoutTests:

  • fast/regions/layers/accelerated-compositing/crash-transform-inside-region-expected.html: Removed.
  • fast/regions/layers/accelerated-compositing/crash-transform-inside-region.html: Removed.
  • fast/regions/layers/accelerated-compositing/floated-region-with-transformed-child-expected.html: Removed.
  • fast/regions/layers/accelerated-compositing/floated-region-with-transformed-child.html: Removed.
  • fast/regions/layers/accelerated-compositing/move-layer-from-one-region-to-another-expected.html: Removed.
  • fast/regions/layers/accelerated-compositing/move-layer-from-one-region-to-another.html: Removed.
  • fast/regions/layers/accelerated-compositing/propagate-region-box-shadow-border-padding-expected.html: Removed.
  • fast/regions/layers/accelerated-compositing/propagate-region-box-shadow-border-padding-for-video-expected.html: Removed.
  • fast/regions/layers/accelerated-compositing/propagate-region-box-shadow-border-padding-for-video.html: Removed.
  • fast/regions/layers/accelerated-compositing/propagate-region-box-shadow-border-padding.html: Removed.
  • fast/regions/layers/accelerated-compositing/region-as-layer-in-another-flowthread-expected.html: Removed.
  • fast/regions/layers/accelerated-compositing/region-as-layer-in-another-flowthread.html: Removed.
  • fast/regions/layers/accelerated-compositing/transform-transparent-positioned-video-inside-region-expected.html: Removed.
  • fast/regions/layers/accelerated-compositing/transform-transparent-positioned-video-inside-region.html: Removed.
  • fast/regions/layers/accelerated-compositing/transformed-layer-inside-transformed-layer-expected.html: Removed.
  • fast/regions/layers/accelerated-compositing/transformed-layer-inside-transformed-layer.html: Removed.
  • fast/regions/layers/accelerated-compositing/z-index-expected.html: Removed.
  • fast/regions/layers/accelerated-compositing/z-index-update-expected.html: Removed.
  • fast/regions/layers/accelerated-compositing/z-index-update.html: Removed.
  • fast/regions/layers/accelerated-compositing/z-index.html: Removed.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/rendering/RenderFlowThread.cpp

    r156451 r156478  
    237237    // containers, but just adjusting the position of the RenderLayerBacking.
    238238    if (!m_needsTwoPhasesLayout) {
    239         // If we have layers that moved from one region to another, we trigger
     239        updateLayerToRegionMappings();
     240        // FIXME: If we have layers that moved from one region to another, we should trigger
    240241        // a composited layers rebuild in here to make sure that the regions will collect the right layers.
    241         if (isOutOfFlowRenderFlowThread() && updateAllLayerToRegionMappings())
    242             layer()->compositor().setCompositingLayersNeedRebuild();
    243242    }
    244243#endif
     
    252251
    253252#if USE(ACCELERATED_COMPOSITING)
    254 bool RenderFlowThread::hasCompositingRegionDescendant() const
    255 {
    256     for (RenderRegionList::const_iterator iter = m_regionList.begin(); iter != m_regionList.end(); ++iter) {
    257         RenderRegion* region = *iter;
    258         if (region->hasLayer() && region->layer()->hasCompositingDescendant())
    259             return true;
    260     }
    261     return false;
    262 }
    263 
    264 const RenderLayerList* RenderFlowThread::getLayerListForRegion(RenderRegion* region) const
    265 {
    266     if (!m_regionToLayerListMap)
    267         return 0;
    268     ASSERT(!m_layersToRegionMappingsDirty);
    269     RegionToLayerListMap::const_iterator iterator = m_regionToLayerListMap->find(region);
    270     return iterator == m_regionToLayerListMap->end() ? 0 : &iterator->value;
    271 }
    272 
    273 // FIXME: make it const when it won't be calling regionAtBlockOffset.
    274253RenderRegion* RenderFlowThread::regionForCompositedLayer(RenderLayer* childLayer)
    275254{
    276     if (childLayer->renderBox()) {
    277         RenderRegion* startRegion = 0;
    278         RenderRegion* endRegion = 0;
    279         getRegionRangeForBox(childLayer->renderBox(), startRegion, endRegion);
    280         // The video tag is such a box that doesn't have a region range because it's inline (by default).
    281         if (startRegion)
    282             return startRegion;
    283     }
    284 
    285     // FIXME: remove this when we'll have region ranges for inlines as well.
    286     LayoutPoint flowThreadOffset = flooredLayoutPoint(childLayer->renderer().localToContainerPoint(LayoutPoint(), this, ApplyContainerFlip));
     255    LayoutPoint leftTopLocation = childLayer->renderBox() ? childLayer->renderBox()->flipForWritingMode(LayoutPoint()) : LayoutPoint();
     256    LayoutPoint flowThreadOffset = flooredLayoutPoint(childLayer->renderer().localToContainerPoint(leftTopLocation, this, ApplyContainerFlip));
    287257    return regionAtBlockOffset(0, flipForWritingMode(isHorizontalWritingMode() ? flowThreadOffset.y() : flowThreadOffset.x()), true, DisallowRegionAutoGeneration);
    288258}
    289259
    290 RenderRegion* RenderFlowThread::cachedRegionForCompositedLayer(RenderLayer* childLayer) const
    291 {
    292     if (!m_layerToRegionMap)
    293         return 0;
    294     ASSERT(!m_layersToRegionMappingsDirty);
    295     return m_layerToRegionMap->get(childLayer);
    296 }
    297 
    298 // FIXME: Make it const when regionForCompositedLayer will be const.
    299 void RenderFlowThread::updateLayerToRegionMappings(RenderLayer* layer, LayerToRegionMap& layerToRegionMap, RegionToLayerListMap& regionToLayerListMap, bool& needsLayerUpdate)
     260void RenderFlowThread::updateRegionForRenderLayer(RenderLayer* layer, LayerToRegionMap& layerToRegionMap, RegionToLayerListMap& regionToLayerListMap, bool& needsLayerUpdate)
    300261{
    301262    RenderRegion* region = regionForCompositedLayer(layer);
    302263    if (!needsLayerUpdate) {
     264        ASSERT(m_layerToRegionMap);
    303265        // Figure out if we moved this layer from a region to the other.
    304         RenderRegion* previousRegion = cachedRegionForCompositedLayer(layer);
     266        RenderRegion* previousRegion = m_layerToRegionMap->get(layer);
    305267        if (previousRegion != region)
    306268            needsLayerUpdate = true;
    307269    }
    308 
    309270    if (!region)
    310271        return;
    311 
    312272    layerToRegionMap.set(layer, region);
    313 
    314273    RegionToLayerListMap::iterator iterator = regionToLayerListMap.find(region);
    315274    RenderLayerList& list = iterator == regionToLayerListMap.end() ? regionToLayerListMap.set(region, RenderLayerList()).iterator->value : iterator->value;
    316     ASSERT(!list.contains(layer));
    317275    list.append(layer);
    318276}
    319277
    320 bool RenderFlowThread::updateAllLayerToRegionMappings()
     278bool RenderFlowThread::updateLayerToRegionMappings()
    321279{
    322280    // We only need to map layers to regions for named flow threads.
     
    331289
    332290    // If the RenderFlowThread had a z-index layer update, then we need to update the composited layers too.
    333     bool needsLayerUpdate = layer()->isDirtyRenderFlowThread() || m_layersToRegionMappingsDirty || !m_layerToRegionMap.get();
     291    bool needsLayerUpdate = m_layersToRegionMappingsDirty || !m_layerToRegionMap.get();
    334292    layer()->updateLayerListsIfNeeded();
    335293
     
    337295    RegionToLayerListMap regionToLayerListMap;
    338296
    339     RenderLayerList* lists[] = { layer()->negZOrderList(), layer()->normalFlowList(), layer()->posZOrderList()};
    340     for (size_t listIndex = 0; listIndex < sizeof(lists) / sizeof(lists[0]); ++listIndex)
    341         if (RenderLayerList* list = lists[listIndex])
    342             for (size_t i = 0, listSize = list->size(); i < listSize; ++i)
    343                 updateLayerToRegionMappings(list->at(i), layerToRegionMap, regionToLayerListMap, needsLayerUpdate);
     297    if (Vector<RenderLayer*>* negZOrderList = layer()->negZOrderList()) {
     298        size_t listSize = negZOrderList->size();
     299        for (size_t i = 0; i < listSize; ++i)
     300            updateRegionForRenderLayer(negZOrderList->at(i), layerToRegionMap, regionToLayerListMap, needsLayerUpdate);
     301    }
     302
     303    if (Vector<RenderLayer*>* normalFlowList = layer()->normalFlowList()) {
     304        size_t listSize = normalFlowList->size();
     305        for (size_t i = 0; i < listSize; ++i)
     306            updateRegionForRenderLayer(normalFlowList->at(i), layerToRegionMap, regionToLayerListMap, needsLayerUpdate);
     307    }
     308   
     309    if (Vector<RenderLayer*>* posZOrderList = layer()->posZOrderList()) {
     310        size_t listSize = posZOrderList->size();
     311        for (size_t i = 0; i < listSize; ++i)
     312            updateRegionForRenderLayer(posZOrderList->at(i), layerToRegionMap, regionToLayerListMap, needsLayerUpdate);
     313    }
    344314
    345315    if (needsLayerUpdate) {
     
    348318        m_layerToRegionMap->swap(layerToRegionMap);
    349319
    350         if (!m_regionToLayerListMap)
    351             m_regionToLayerListMap = adoptPtr(new RegionToLayerListMap());
    352         m_regionToLayerListMap->swap(regionToLayerListMap);
    353 
    354320        for (RenderRegionList::iterator iter = m_regionList.begin(); iter != m_regionList.end(); ++iter) {
    355321            RenderRegion* region = *iter;
    356             region->setRequiresLayerForCompositing(m_regionToLayerListMap->contains(region));
     322            region->setRequiresLayerForCompositing(regionToLayerListMap.contains(region));
    357323        }
    358324    }
Note: See TracChangeset for help on using the changeset viewer.