Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. | 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. |
| 5 * | 5 * |
| 6 * Other contributors: | 6 * Other contributors: |
| 7 * Robert O'Callahan <roc+@cs.cmu.edu> | 7 * Robert O'Callahan <roc+@cs.cmu.edu> |
| 8 * David Baron <dbaron@fas.harvard.edu> | 8 * David Baron <dbaron@fas.harvard.edu> |
| 9 * Christian Biesinger <cbiesinger@web.de> | 9 * Christian Biesinger <cbiesinger@web.de> |
| 10 * Randall Jesup <rjesup@wgate.com> | 10 * Randall Jesup <rjesup@wgate.com> |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 70 } | 70 } |
| 71 | 71 |
| 72 // Since we're only painting non-composited layers, we know that they all share the same repaintContainer. | 72 // Since we're only painting non-composited layers, we know that they all share the same repaintContainer. |
| 73 void RenderLayerRepainter::repaintIncludingNonCompositingDescendants() | 73 void RenderLayerRepainter::repaintIncludingNonCompositingDescendants() |
| 74 { | 74 { |
| 75 repaintIncludingNonCompositingDescendantsInternal(m_renderer.containerForPai ntInvalidation()); | 75 repaintIncludingNonCompositingDescendantsInternal(m_renderer.containerForPai ntInvalidation()); |
| 76 } | 76 } |
| 77 | 77 |
| 78 void RenderLayerRepainter::repaintIncludingNonCompositingDescendantsInternal(con st RenderLayerModelObject* repaintContainer) | 78 void RenderLayerRepainter::repaintIncludingNonCompositingDescendantsInternal(con st RenderLayerModelObject* repaintContainer) |
| 79 { | 79 { |
| 80 m_renderer.invalidatePaintUsingContainer(repaintContainer, pixelSnappedIntRe ct(m_renderer.boundsRectForPaintInvalidation(repaintContainer)), InvalidationLay er); | 80 m_renderer.invalidatePaintUsingContainer(repaintContainer, m_renderer.bounds RectForPaintInvalidation(repaintContainer), InvalidationLayer); |
| 81 | 81 |
| 82 // FIXME: Repaints can be issued during style recalc at present, via RenderL ayerModelObject::styleWillChange. This happens in scenarios when | 82 // FIXME: Repaints can be issued during style recalc at present, via RenderL ayerModelObject::styleWillChange. This happens in scenarios when |
| 83 // repaint is needed but not layout. | 83 // repaint is needed but not layout. |
| 84 DisableCompositingQueryAsserts disabler; | 84 DisableCompositingQueryAsserts disabler; |
| 85 | 85 |
| 86 for (RenderLayer* curr = m_renderer.layer()->firstChild(); curr; curr = curr ->nextSibling()) { | 86 for (RenderLayer* curr = m_renderer.layer()->firstChild(); curr; curr = curr ->nextSibling()) { |
| 87 if (curr->compositingState() != PaintsIntoOwnBacking && curr->compositin gState() != PaintsIntoGroupedBacking) | 87 if (curr->compositingState() != PaintsIntoOwnBacking && curr->compositin gState() != PaintsIntoGroupedBacking) |
| 88 curr->repainter().repaintIncludingNonCompositingDescendantsInternal( repaintContainer); | 88 curr->repainter().repaintIncludingNonCompositingDescendantsInternal( repaintContainer); |
| 89 } | 89 } |
| 90 } | 90 } |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 117 absRect.moveBy(delta); | 117 absRect.moveBy(delta); |
| 118 | 118 |
| 119 if (absRect.isEmpty()) | 119 if (absRect.isEmpty()) |
| 120 return; | 120 return; |
| 121 | 121 |
| 122 RenderView* view = m_renderer.view(); | 122 RenderView* view = m_renderer.view(); |
| 123 if (view) | 123 if (view) |
| 124 view->repaintViewRectangle(absRect); | 124 view->repaintViewRectangle(absRect); |
| 125 return; | 125 return; |
| 126 } | 126 } |
| 127 IntRect repaintRect = pixelSnappedIntRect(r); | |
| 128 // FIXME: generalize accessors to backing GraphicsLayers so that this code i s squasphing-agnostic. | 127 // FIXME: generalize accessors to backing GraphicsLayers so that this code i s squasphing-agnostic. |
| 129 if (m_renderer.layer()->groupedMapping()) { | 128 if (m_renderer.layer()->groupedMapping()) { |
| 129 // FIXME: how about subpixel accumulation? | |
|
chrishtr
2014/07/02 04:39:58
Instead of a non-squashing specific fix, please ch
Xianzhu
2014/07/02 16:19:10
Thanks for the solution! Done.
| |
| 130 if (GraphicsLayer* squashingLayer = m_renderer.layer()->groupedMapping() ->squashingLayer()) | 130 if (GraphicsLayer* squashingLayer = m_renderer.layer()->groupedMapping() ->squashingLayer()) |
| 131 squashingLayer->setNeedsDisplayInRect(repaintRect); | 131 squashingLayer->setNeedsDisplayInRect(pixelSnappedIntRect(r)); |
| 132 } else { | 132 } else { |
| 133 m_renderer.layer()->compositedLayerMapping()->setContentsNeedDisplayInRe ct(repaintRect); | 133 m_renderer.layer()->compositedLayerMapping()->setContentsNeedDisplayInRe ct(r); |
| 134 } | 134 } |
| 135 } | 135 } |
| 136 | 136 |
| 137 void RenderLayerRepainter::setFilterBackendNeedsRepaintingInRect(const LayoutRec t& rect) | 137 void RenderLayerRepainter::setFilterBackendNeedsRepaintingInRect(const LayoutRec t& rect) |
| 138 { | 138 { |
| 139 if (rect.isEmpty()) | 139 if (rect.isEmpty()) |
| 140 return; | 140 return; |
| 141 LayoutRect rectForRepaint = rect; | 141 LayoutRect rectForRepaint = rect; |
| 142 m_renderer.style()->filterOutsets().expandRect(rectForRepaint); | 142 m_renderer.style()->filterOutsets().expandRect(rectForRepaint); |
| 143 | 143 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 175 RenderLayer* RenderLayerRepainter::enclosingFilterRepaintLayer() const | 175 RenderLayer* RenderLayerRepainter::enclosingFilterRepaintLayer() const |
| 176 { | 176 { |
| 177 for (const RenderLayer* curr = m_renderer.layer(); curr; curr = curr->parent ()) { | 177 for (const RenderLayer* curr = m_renderer.layer(); curr; curr = curr->parent ()) { |
| 178 if ((curr != m_renderer.layer() && curr->requiresFullLayerImageForFilter s()) || curr->compositingState() == PaintsIntoOwnBacking || curr->isRootLayer()) | 178 if ((curr != m_renderer.layer() && curr->requiresFullLayerImageForFilter s()) || curr->compositingState() == PaintsIntoOwnBacking || curr->isRootLayer()) |
| 179 return const_cast<RenderLayer*>(curr); | 179 return const_cast<RenderLayer*>(curr); |
| 180 } | 180 } |
| 181 return 0; | 181 return 0; |
| 182 } | 182 } |
| 183 | 183 |
| 184 } // Namespace WebCore | 184 } // Namespace WebCore |
| OLD | NEW |