OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009, 2010, 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009, 2010, 2011 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 1617 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1628 } | 1628 } |
1629 | 1629 |
1630 bool CompositedLayerMapping::hasVisibleNonCompositingDescendant(RenderLayer* par
ent) | 1630 bool CompositedLayerMapping::hasVisibleNonCompositingDescendant(RenderLayer* par
ent) |
1631 { | 1631 { |
1632 if (!parent->hasVisibleDescendant()) | 1632 if (!parent->hasVisibleDescendant()) |
1633 return false; | 1633 return false; |
1634 | 1634 |
1635 // FIXME: We shouldn't be called with a stale z-order lists. See bug 85512. | 1635 // FIXME: We shouldn't be called with a stale z-order lists. See bug 85512. |
1636 parent->stackingNode()->updateLayerListsIfNeeded(); | 1636 parent->stackingNode()->updateLayerListsIfNeeded(); |
1637 | 1637 |
1638 #if ASSERT_ENABLED | 1638 #if ENABLE(ASSERT) |
1639 LayerListMutationDetector mutationChecker(parent->stackingNode()); | 1639 LayerListMutationDetector mutationChecker(parent->stackingNode()); |
1640 #endif | 1640 #endif |
1641 | 1641 |
1642 RenderLayerStackingNodeIterator normalFlowIterator(*parent->stackingNode(),
AllChildren); | 1642 RenderLayerStackingNodeIterator normalFlowIterator(*parent->stackingNode(),
AllChildren); |
1643 while (RenderLayerStackingNode* curNode = normalFlowIterator.next()) { | 1643 while (RenderLayerStackingNode* curNode = normalFlowIterator.next()) { |
1644 RenderLayer* curLayer = curNode->layer(); | 1644 RenderLayer* curLayer = curNode->layer(); |
1645 if (curLayer->hasCompositedLayerMapping()) | 1645 if (curLayer->hasCompositedLayerMapping()) |
1646 continue; | 1646 continue; |
1647 if (curLayer->hasVisibleContent() || hasVisibleNonCompositingDescendant(
curLayer)) | 1647 if (curLayer->hasVisibleContent() || hasVisibleNonCompositingDescendant(
curLayer)) |
1648 return true; | 1648 return true; |
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2014 dirtyRect.move(offset); | 2014 dirtyRect.move(offset); |
2015 | 2015 |
2016 if (!(paintInfo.paintingPhase & GraphicsLayerPaintOverflowContents)) { | 2016 if (!(paintInfo.paintingPhase & GraphicsLayerPaintOverflowContents)) { |
2017 LayoutRect bounds = paintInfo.compositedBounds; | 2017 LayoutRect bounds = paintInfo.compositedBounds; |
2018 bounds.move(paintInfo.renderLayer->subpixelAccumulation()); | 2018 bounds.move(paintInfo.renderLayer->subpixelAccumulation()); |
2019 dirtyRect.intersect(pixelSnappedIntRect(bounds)); | 2019 dirtyRect.intersect(pixelSnappedIntRect(bounds)); |
2020 } else { | 2020 } else { |
2021 dirtyRect.move(roundedIntSize(paintInfo.renderLayer->subpixelAccumulatio
n())); | 2021 dirtyRect.move(roundedIntSize(paintInfo.renderLayer->subpixelAccumulatio
n())); |
2022 } | 2022 } |
2023 | 2023 |
2024 #ifndef NDEBUG | 2024 #if ENABLE(ASSERT) |
2025 paintInfo.renderLayer->renderer()->assertSubtreeIsLaidOut(); | 2025 paintInfo.renderLayer->renderer()->assertSubtreeIsLaidOut(); |
2026 #endif | 2026 #endif |
2027 | 2027 |
2028 if (paintInfo.renderLayer->compositingState() != PaintsIntoGroupedBacking) { | 2028 if (paintInfo.renderLayer->compositingState() != PaintsIntoGroupedBacking) { |
2029 // FIXME: GraphicsLayers need a way to split for RenderRegions. | 2029 // FIXME: GraphicsLayers need a way to split for RenderRegions. |
2030 LayerPaintingInfo paintingInfo(paintInfo.renderLayer, dirtyRect, PaintBe
haviorNormal, paintInfo.renderLayer->subpixelAccumulation()); | 2030 LayerPaintingInfo paintingInfo(paintInfo.renderLayer, dirtyRect, PaintBe
haviorNormal, paintInfo.renderLayer->subpixelAccumulation()); |
2031 paintInfo.renderLayer->paintLayerContents(context, paintingInfo, paintFl
ags); | 2031 paintInfo.renderLayer->paintLayerContents(context, paintingInfo, paintFl
ags); |
2032 | 2032 |
2033 ASSERT(!paintInfo.isBackgroundLayer || paintFlags & PaintLayerPaintingRo
otBackgroundOnly); | 2033 ASSERT(!paintInfo.isBackgroundLayer || paintFlags & PaintLayerPaintingRo
otBackgroundOnly); |
2034 | 2034 |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2066 transformedClip.moveBy(scrollbarRect.location()); | 2066 transformedClip.moveBy(scrollbarRect.location()); |
2067 scrollbar->paint(&context, transformedClip); | 2067 scrollbar->paint(&context, transformedClip); |
2068 context.restore(); | 2068 context.restore(); |
2069 } | 2069 } |
2070 | 2070 |
2071 // Up-call from compositing layer drawing callback. | 2071 // Up-call from compositing layer drawing callback. |
2072 void CompositedLayerMapping::paintContents(const GraphicsLayer* graphicsLayer, G
raphicsContext& context, GraphicsLayerPaintingPhase paintingPhase, const IntRect
& clip) | 2072 void CompositedLayerMapping::paintContents(const GraphicsLayer* graphicsLayer, G
raphicsContext& context, GraphicsLayerPaintingPhase paintingPhase, const IntRect
& clip) |
2073 { | 2073 { |
2074 // https://code.google.com/p/chromium/issues/detail?id=343772 | 2074 // https://code.google.com/p/chromium/issues/detail?id=343772 |
2075 DisableCompositingQueryAsserts disabler; | 2075 DisableCompositingQueryAsserts disabler; |
2076 #ifndef NDEBUG | 2076 #if ENABLE(ASSERT) |
2077 // FIXME: once the state machine is ready, this can be removed and we can re
fer to that instead. | 2077 // FIXME: once the state machine is ready, this can be removed and we can re
fer to that instead. |
2078 if (Page* page = renderer()->frame()->page()) | 2078 if (Page* page = renderer()->frame()->page()) |
2079 page->setIsPainting(true); | 2079 page->setIsPainting(true); |
2080 #endif | 2080 #endif |
2081 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "Paint", "data"
, InspectorPaintEvent::data(m_owningLayer.renderer(), clip, graphicsLayer)); | 2081 TRACE_EVENT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "Paint", "data"
, InspectorPaintEvent::data(m_owningLayer.renderer(), clip, graphicsLayer)); |
2082 TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline.stack"), "
CallStack", "stack", InspectorCallStackEvent::currentCallStack()); | 2082 TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline.stack"), "
CallStack", "stack", InspectorCallStackEvent::currentCallStack()); |
2083 // FIXME(361045): remove InspectorInstrumentation calls once DevTools Timeli
ne migrates to tracing. | 2083 // FIXME(361045): remove InspectorInstrumentation calls once DevTools Timeli
ne migrates to tracing. |
2084 InspectorInstrumentation::willPaint(m_owningLayer.renderer(), graphicsLayer)
; | 2084 InspectorInstrumentation::willPaint(m_owningLayer.renderer(), graphicsLayer)
; |
2085 | 2085 |
2086 if (graphicsLayer == m_graphicsLayer.get() | 2086 if (graphicsLayer == m_graphicsLayer.get() |
(...skipping 25 matching lines...) Expand all Loading... |
2112 const IntRect& scrollCornerAndResizer = m_owningLayer.scrollableArea()->
scrollCornerAndResizerRect(); | 2112 const IntRect& scrollCornerAndResizer = m_owningLayer.scrollableArea()->
scrollCornerAndResizerRect(); |
2113 context.save(); | 2113 context.save(); |
2114 context.translate(-scrollCornerAndResizer.x(), -scrollCornerAndResizer.y
()); | 2114 context.translate(-scrollCornerAndResizer.x(), -scrollCornerAndResizer.y
()); |
2115 IntRect transformedClip = clip; | 2115 IntRect transformedClip = clip; |
2116 transformedClip.moveBy(scrollCornerAndResizer.location()); | 2116 transformedClip.moveBy(scrollCornerAndResizer.location()); |
2117 m_owningLayer.scrollableArea()->paintScrollCorner(&context, IntPoint(),
transformedClip); | 2117 m_owningLayer.scrollableArea()->paintScrollCorner(&context, IntPoint(),
transformedClip); |
2118 m_owningLayer.scrollableArea()->paintResizer(&context, IntPoint(), trans
formedClip); | 2118 m_owningLayer.scrollableArea()->paintResizer(&context, IntPoint(), trans
formedClip); |
2119 context.restore(); | 2119 context.restore(); |
2120 } | 2120 } |
2121 InspectorInstrumentation::didPaint(m_owningLayer.renderer(), graphicsLayer,
&context, clip); | 2121 InspectorInstrumentation::didPaint(m_owningLayer.renderer(), graphicsLayer,
&context, clip); |
2122 #ifndef NDEBUG | 2122 #if ENABLE(ASSERT) |
2123 if (Page* page = renderer()->frame()->page()) | 2123 if (Page* page = renderer()->frame()->page()) |
2124 page->setIsPainting(false); | 2124 page->setIsPainting(false); |
2125 #endif | 2125 #endif |
2126 } | 2126 } |
2127 | 2127 |
2128 bool CompositedLayerMapping::isTrackingRepaints() const | 2128 bool CompositedLayerMapping::isTrackingRepaints() const |
2129 { | 2129 { |
2130 GraphicsLayerClient* client = compositor(); | 2130 GraphicsLayerClient* client = compositor(); |
2131 return client ? client->isTrackingRepaints() : false; | 2131 return client ? client->isTrackingRepaints() : false; |
2132 } | 2132 } |
2133 | 2133 |
2134 #ifndef NDEBUG | 2134 #if ENABLE(ASSERT) |
2135 void CompositedLayerMapping::verifyNotPainting() | 2135 void CompositedLayerMapping::verifyNotPainting() |
2136 { | 2136 { |
2137 ASSERT(!renderer()->frame()->page() || !renderer()->frame()->page()->isPaint
ing()); | 2137 ASSERT(!renderer()->frame()->page() || !renderer()->frame()->page()->isPaint
ing()); |
2138 } | 2138 } |
2139 #endif | 2139 #endif |
2140 | 2140 |
2141 void CompositedLayerMapping::notifyAnimationStarted(const GraphicsLayer*, double
monotonicTime) | 2141 void CompositedLayerMapping::notifyAnimationStarted(const GraphicsLayer*, double
monotonicTime) |
2142 { | 2142 { |
2143 renderer()->node()->document().compositorPendingAnimations().notifyComposito
rAnimationStarted(monotonicTime); | 2143 renderer()->node()->document().compositorPendingAnimations().notifyComposito
rAnimationStarted(monotonicTime); |
2144 } | 2144 } |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2243 } else if (graphicsLayer == m_scrollingBlockSelectionLayer.get()) { | 2243 } else if (graphicsLayer == m_scrollingBlockSelectionLayer.get()) { |
2244 name = "Scrolling Block Selection Layer"; | 2244 name = "Scrolling Block Selection Layer"; |
2245 } else { | 2245 } else { |
2246 ASSERT_NOT_REACHED(); | 2246 ASSERT_NOT_REACHED(); |
2247 } | 2247 } |
2248 | 2248 |
2249 return name; | 2249 return name; |
2250 } | 2250 } |
2251 | 2251 |
2252 } // namespace WebCore | 2252 } // namespace WebCore |
OLD | NEW |