[Webkit-unassigned] [Bug 101857] Updating mouse cursor on style changes without emitting fake mousemove event
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Thu Feb 14 19:53:24 PST 2013
https://bugs.webkit.org/show_bug.cgi?id=101857
--- Comment #87 from Simon Fraser (smfr) <simon.fraser at apple.com> 2013-02-14 19:55:40 PST ---
This patch is fundamentally wrong, and a huge performance regression.
It's wrong because you're do hit testing (via updateCursor()) inside of style recalc. Hit testing relies on geometry, but since style recalc happens before layout, the geometry is not up-to-date.
Secondly, it's a huge perf hit. I profiled the web inspector while dragging a separator around, and see this:
Running Time Self Symbol Name
7864.0ms 96.6% 0.0 WebCore::Element::recalcStyle(WebCore::Node::StyleChange)
7849.0ms 96.4% 0.0 WebCore::Element::recalcStyle(WebCore::Node::StyleChange)
7842.0ms 96.3% 0.0 WebCore::Element::recalcStyle(WebCore::Node::StyleChange)
5233.0ms 64.3% 1.0 WebCore::Element::recalcStyle(WebCore::Node::StyleChange)
4534.0ms 55.7% 0.0 WebCore::Element::recalcStyle(WebCore::Node::StyleChange)
1932.0ms 23.7% 1.0 WebCore::Element::recalcStyle(WebCore::Node::StyleChange)
1614.0ms 19.8% 0.0 WebCore::Text::recalcTextStyle(WebCore::Node::StyleChange)
1612.0ms 19.8% 1.0 WebCore::RenderObject::setStyle(WTF::PassRefPtr<WebCore::RenderStyle>)
1607.0ms 19.7% 0.0 WebCore::EventHandler::updateCursor()
1583.0ms 19.4% 0.0 WebCore::RenderView::hitTest(WebCore::HitTestRequest const&, WebCore::HitTestResult&)
1583.0ms 19.4% 0.0 WebCore::RenderLayer::hitTest(WebCore::HitTestRequest const&, WebCore::HitTestLocation const&, WebCore::HitTestResult&)
1580.0ms 19.4% 1.0 WebCore::RenderLayer::hitTestLayer(WebCore::RenderLayer*, WebCore::RenderLayer*, WebCore::HitTestRequest const&, WebCore::HitTestResult&, WebCore::LayoutRect const&, WebCore::HitTestLocation const&, bool, WebCore::HitTestingTransformState const*, double*)
1578.0ms 19.3% 0.0 WebCore::RenderLayer::hitTestList(WTF::Vector<WebCore::RenderLayer*, 0ul>*, WebCore::RenderLayer*, WebCore::HitTestRequest const&, WebCore::HitTestResult&, WebCore::LayoutRect const&, WebCore::HitTestLocation const&, WebCore::HitTestingTransformState const*, double*, double*, WebCore::HitTestingTransformState const*, bool)
1578.0ms 19.3% 0.0 WebCore::RenderLayer::hitTestLayer(WebCore::RenderLayer*, WebCore::RenderLayer*, WebCore::HitTestRequest const&, WebCore::HitTestResult&, WebCore::LayoutRect const&, WebCore::HitTestLocation const&, bool, WebCore::HitTestingTransformState const*, double*)
1578.0ms 19.3% 0.0 WebCore::RenderLayer::hitTestList(WTF::Vector<WebCore::RenderLayer*, 0ul>*, WebCore::RenderLayer*, WebCore::HitTestRequest const&, WebCore::HitTestResult&, WebCore::LayoutRect const&, WebCore::HitTestLocation const&, WebCore::HitTestingTransformState const*, double*, double*, WebCore::HitTestingTransformState const*, bool)
1577.0ms 19.3% 0.0 WebCore::RenderLayer::hitTestLayer(WebCore::RenderLayer*, WebCore::RenderLayer*, WebCore::HitTestRequest const&, WebCore::HitTestResult&, WebCore::LayoutRect const&, WebCore::HitTestLocation const&, bool, WebCore::HitTestingTransformState const*, double*)
1572.0ms 19.3% 4.0 WebCore::RenderLayer::hitTestList(WTF::Vector<WebCore::RenderLayer*, 0ul>*, WebCore::RenderLayer*, WebCore::HitTestRequest const&, WebCore::HitTestResult&, WebCore::LayoutRect const&, WebCore::HitTestLocation const&, WebCore::HitTestingTransformState const*, double*, double*, WebCore::HitTestingTransformState const*, bool)
1567.0ms 19.2% 5.0 WebCore::RenderLayer::hitTestLayer(WebCore::RenderLayer*, WebCore::RenderLayer*, WebCore::HitTestRequest const&, WebCore::HitTestResult&, WebCore::LayoutRect const&, WebCore::HitTestLocation const&, bool, WebCore::HitTestingTransformState const*, double*)
1528.0ms 18.7% 122.0 WebCore::RenderLayer::hitTestList(WTF::Vector<WebCore::RenderLayer*, 0ul>*, WebCore::RenderLayer*, WebCore::HitTestRequest const&, WebCore::HitTestResult&, WebCore::LayoutRect const&, WebCore::HitTestLocation const&, WebCore::HitTestingTransformState const*, double*, double*, WebCore::HitTestingTransformState const*, bool)
1352.0ms 16.6% 182.0 WebCore::RenderLayer::hitTestLayer(WebCore::RenderLayer*, WebCore::RenderLayer*, WebCore::HitTestRequest const&, WebCore::HitTestResult&, WebCore::LayoutRect const&, WebCore::HitTestLocation const&, bool, WebCore::HitTestingTransformState const*, double*)
--
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the webkit-unassigned
mailing list