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 |