|
|
Chromium Code Reviews|
Created:
6 years, 6 months ago by chrishtr Modified:
6 years, 6 months ago CC:
blink-layers+watch_chromium.org, blink-reviews, blink-reviews-rendering, eae+blinkwatch, jchaffraix+rendering, leviw+renderwatch, pdr., rune+blink, zoltan1 Base URL:
svn://svn.chromium.org/blink/trunk Visibility:
Public. |
DescriptionWhen performing a fast-path scroll, issue repaints for viewport-constrained layers
relative to their repaint container, not their enclosing composited ancestor.
The latter is wrong for squashing.
BUG=370664
Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=175534
Patch Set 1 #Patch Set 2 : Remove dead code. #Patch Set 3 : Fix. #
Total comments: 6
Patch Set 4 : Merged. #
Messages
Total messages: 37 (0 generated)
On 2014/06/04 19:57:29, chrishtr wrote: That totally makes sense. lgtm.
lgtm as well. https://codereview.chromium.org/318793002/diff/40001/Source/core/frame/FrameV... File Source/core/frame/FrameView.cpp (right): https://codereview.chromium.org/318793002/diff/40001/Source/core/frame/FrameV... Source/core/frame/FrameView.cpp:1423: if (repaintContainer && !repaintContainer->isRenderView()) { Can we really get a null repaintContainer here? It looks to me that containerForRepaint will only return null if the renderer isn't rooted. But if it's not rooted I would expect we can't get to this code. I'm not 100% sure. But, I'd be happier with an ASSERT(!repaintContainer) if it passes the tests.
https://codereview.chromium.org/318793002/diff/40001/Source/core/frame/FrameV... File Source/core/frame/FrameView.cpp (right): https://codereview.chromium.org/318793002/diff/40001/Source/core/frame/FrameV... Source/core/frame/FrameView.cpp:1423: if (repaintContainer && !repaintContainer->isRenderView()) { On 2014/06/04 20:07:29, ojan wrote: > Can we really get a null repaintContainer here? It looks to me that > containerForRepaint will only return null if the renderer isn't rooted. But if > it's not rooted I would expect we can't get to this code. > > I'm not 100% sure. But, I'd be happier with an ASSERT(!repaintContainer) if it > passes the tests. Yes it can happen. crbug.com/380147
The CQ bit was checked by chrishtr@chromium.org
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/chrishtr@chromium.org/318793002/40001
https://codereview.chromium.org/318793002/diff/40001/Source/core/frame/FrameV... File Source/core/frame/FrameView.cpp (right): https://codereview.chromium.org/318793002/diff/40001/Source/core/frame/FrameV... Source/core/frame/FrameView.cpp:1423: if (repaintContainer && !repaintContainer->isRenderView()) { On 2014/06/04 20:11:41, chrishtr wrote: > On 2014/06/04 20:07:29, ojan wrote: > > Can we really get a null repaintContainer here? It looks to me that > > containerForRepaint will only return null if the renderer isn't rooted. But if > > it's not rooted I would expect we can't get to this code. > > > > I'm not 100% sure. But, I'd be happier with an ASSERT(!repaintContainer) if it > > passes the tests. > > Yes it can happen. crbug.com/380147 Do you have a test case? We shouldn't be getting a null repaint value here...
FYI, CQ is re-trying this CL (attempt #1). The failing builders are: blink_presubmit on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/blink_presubmit/builds/6949) linux_blink_dbg on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/linux_blink_dbg/builds/1...) linux_blink_rel on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/linux_blink_rel/builds/1...)
https://codereview.chromium.org/318793002/diff/40001/Source/core/frame/FrameV... File Source/core/frame/FrameView.cpp (right): https://codereview.chromium.org/318793002/diff/40001/Source/core/frame/FrameV... Source/core/frame/FrameView.cpp:1423: if (repaintContainer && !repaintContainer->isRenderView()) { On 2014/06/04 20:37:25, leviw wrote: > On 2014/06/04 20:11:41, chrishtr wrote: > > On 2014/06/04 20:07:29, ojan wrote: > > > Can we really get a null repaintContainer here? It looks to me that > > > containerForRepaint will only return null if the renderer isn't rooted. But > if > > > it's not rooted I would expect we can't get to this code. > > > > > > I'm not 100% sure. But, I'd be happier with an ASSERT(!repaintContainer) if > it > > > passes the tests. > > > > Yes it can happen. crbug.com/380147 > > Do you have a test case? We shouldn't be getting a null repaint value here... compositing/reflections/nested-reflection-transformed.html It happens while building the DOM tree: <null> 0x7fafae82f77e WebCore::RenderObject::boundsRectForRepaint() #4 0x7fafae7f99e3 WebCore::RenderLayerRepainter::computeRepaintRects() #5 0x7fafae7f97a2 WebCore::RenderLayerRepainter::repaintAfterLayout() #6 0x7fafae7d6f0b WebCore::RenderLayer::updateLayerPositions() #7 0x7fafae7f8258 WebCore::RenderLayerModelObject::styleDidChange() #8 0x7fafae73fddc WebCore::RenderBox::styleDidChange() #9 0x7fafae832f99 WebCore::RenderObject::setStyle() #10 0x7fafae7f9445 WebCore::RenderLayerReflectionInfo::updateAfterStyleChange() #11 0x7fafae7dc712 WebCore::RenderLayer::updateReflectionInfo() #12 0x7fafae7e75be WebCore::RenderLayer::styleChanged() #13 0x7fafae7f8378 WebCore::RenderLayerModelObject::styleDidChange() #14 0x7fafae73fddc WebCore::RenderBox::styleDidChange() #15 0x7fafae6da956 WebCore::RenderBlock::styleDidChange() #16 0x7fafae71ca16 WebCore::RenderBlockFlow::styleDidChange() #17 0x7fafae832f99 WebCore::RenderObject::setStyle() #18 0x7fafadcb04c1 WebCore::RenderTreeBuilder::createRendererForElementIfNeeded() #19 0x7fafadc36a4f WebCore::Element::attach() #20 0x7fafadbb90d3 WebCore::ContainerNode::attachChildren() #21 0x7fafadbb531f WebCore::ContainerNode::attach() #22 0x7fafadc36ab7 WebCore::Element::attach()
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: blink_presubmit on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/blink_presubmit/builds/6953)
The CQ bit was checked by chrishtr@chromium.org
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/chrishtr@chromium.org/318793002/40001
FYI, CQ is re-trying this CL (attempt #1). The failing builders are: blink_presubmit on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/blink_presubmit/builds/6955) linux_blink_dbg on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/linux_blink_dbg/builds/1...) linux_blink_rel on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/linux_blink_rel/builds/1...)
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: blink_presubmit on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/blink_presubmit/builds/6956) linux_blink_dbg on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/linux_blink_dbg/builds/1...)
The CQ bit was checked by chrishtr@chromium.org
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/chrishtr@chromium.org/318793002/40001
FYI, CQ is re-trying this CL (attempt #1). The failing builders are: blink_presubmit on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/blink_presubmit/builds/6958) linux_blink_dbg on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/linux_blink_dbg/builds/1...)
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: blink_presubmit on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/blink_presubmit/builds/6960) linux_blink_dbg on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/linux_blink_dbg/builds/1...)
The CQ bit was checked by chrishtr@chromium.org
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/chrishtr@chromium.org/318793002/40001
FYI, CQ is re-trying this CL (attempt #1). The failing builders are: blink_presubmit on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/blink_presubmit/builds/6971) linux_blink_dbg on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/linux_blink_dbg/builds/1...)
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: linux_blink_dbg on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/linux_blink_dbg/builds/1...)
The CQ bit was checked by chrishtr@chromium.org
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/chrishtr@chromium.org/318793002/40001
FYI, CQ is re-trying this CL (attempt #1). The failing builders are: blink_presubmit on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/blink_presubmit/builds/6980) linux_blink_dbg on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/linux_blink_dbg/builds/1...)
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: blink_presubmit on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/blink_presubmit/builds/6981)
The CQ bit was checked by chrishtr@chromium.org
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/chrishtr@chromium.org/318793002/50001
FYI, CQ is re-trying this CL (attempt #1). The failing builders are: blink_presubmit on tryserver.blink (http://build.chromium.org/p/tryserver.blink/builders/blink_presubmit/builds/6984)
Message was sent while issue was closed.
Change committed as 175534
Message was sent while issue was closed.
https://codereview.chromium.org/318793002/diff/40001/Source/core/frame/FrameV... File Source/core/frame/FrameView.cpp (right): https://codereview.chromium.org/318793002/diff/40001/Source/core/frame/FrameV... Source/core/frame/FrameView.cpp:1423: if (repaintContainer && !repaintContainer->isRenderView()) { I don't see scrollContentsFastPath on that stack. I know that we can get null repaintContainers in general (i.e. for renderers that are not rooted), but what I'm asking is if we can get them in scrollContentsFastPath.
Message was sent while issue was closed.
https://codereview.chromium.org/318793002/diff/40001/Source/core/frame/FrameV... File Source/core/frame/FrameView.cpp (right): https://codereview.chromium.org/318793002/diff/40001/Source/core/frame/FrameV... Source/core/frame/FrameView.cpp:1423: if (repaintContainer && !repaintContainer->isRenderView()) { On 2014/06/07 17:35:23, ojan wrote: > I don't see scrollContentsFastPath on that stack. I know that we can get null > repaintContainers in general (i.e. for renderers that are not rooted), but what > I'm asking is if we can get them in scrollContentsFastPath. Ok I see, I misinterpreted your question. It does look impossible. I'll add the assert. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
