Changeset 185858 in webkit


Ignore:
Timestamp:
Jun 22, 2015, 6:59:08 PM (11 years ago)
Author:
Simon Fraser
Message:

ASSERT(!m_zOrderListsDirty) when mousing over web view with incremental rendering suppressed
https://bugs.webkit.org/show_bug.cgi?id=146225

Reviewed by Zalan Bujtas.

Update RenderLayer's z-order lists when hit testing. There's no guarantee that they've
been updated; this happens to work most of the time because painting updates them,
but if incremental rendering is suppressed, we may not have painted yet.

Easy to hit on webkit.org in MiniBrowser, but I wasn't able to make a reduced testcase.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::hitTest):
(WebCore::RenderLayer::updateLayerListsIfNeeded): Flip the order of the tests, since checking
dirty bits is cheaper than calling isStackingContext().

Location:
trunk/Source/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r185856 r185858  
     12015-06-22  Simon Fraser  <simon.fraser@apple.com>
     2
     3        ASSERT(!m_zOrderListsDirty) when mousing over web view with incremental rendering suppressed
     4        https://bugs.webkit.org/show_bug.cgi?id=146225
     5
     6        Reviewed by Zalan Bujtas.
     7
     8        Update RenderLayer's z-order lists when hit testing. There's no guarantee that they've
     9        been updated; this happens to work most of the time because painting updates them,
     10        but if incremental rendering is suppressed, we may not have painted yet.
     11       
     12        Easy to hit on webkit.org in MiniBrowser, but I wasn't able to make a reduced testcase.
     13
     14        * rendering/RenderLayer.cpp:
     15        (WebCore::RenderLayer::hitTest):
     16        (WebCore::RenderLayer::updateLayerListsIfNeeded): Flip the order of the tests, since checking
     17        dirty bits is cheaper than calling isStackingContext().
     18
    1192015-06-22  Dean Jackson  <dino@apple.com>
    220
  • trunk/Source/WebCore/rendering/RenderLayer.cpp

    r185517 r185858  
    48094809    ASSERT(isSelfPaintingLayer() || hasSelfPaintingLayerDescendant());
    48104810    ASSERT(!renderer().view().needsLayout());
     4811   
     4812    updateLayerListsIfNeeded();
    48114813
    48124814    LayoutRect hitTestArea = isOutOfFlowRenderFlowThread() ? downcast<RenderFlowThread>(renderer()).visualOverflowRect() : renderer().view().documentRect();
     
    63046306void RenderLayer::updateLayerListsIfNeeded()
    63056307{
    6306     bool shouldUpdateDescendantsAreContiguousInStackingOrder = isStackingContext() && (m_zOrderListsDirty || m_normalFlowListDirty);
     6308    bool shouldUpdateDescendantsAreContiguousInStackingOrder = (m_zOrderListsDirty || m_normalFlowListDirty) && isStackingContext();
    63076309    updateZOrderLists();
    63086310    updateNormalFlowList();
Note: See TracChangeset for help on using the changeset viewer.