| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv
ed. | 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv
ed. |
| 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 4052 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4063 if (!renderer()->documentBeingDestroyed()) | 4063 if (!renderer()->documentBeingDestroyed()) |
| 4064 compositor()->setCompositingLayersNeedRebuild(); | 4064 compositor()->setCompositingLayersNeedRebuild(); |
| 4065 #endif | 4065 #endif |
| 4066 } | 4066 } |
| 4067 | 4067 |
| 4068 void RenderLayer::updateZOrderLists() | 4068 void RenderLayer::updateZOrderLists() |
| 4069 { | 4069 { |
| 4070 if (!isStackingContext() || !m_zOrderListsDirty) | 4070 if (!isStackingContext() || !m_zOrderListsDirty) |
| 4071 return; | 4071 return; |
| 4072 | 4072 |
| 4073 #if USE(ACCELERATED_COMPOSITING) | |
| 4074 bool includeHiddenLayers = compositor()->inCompositingMode(); | |
| 4075 #else | |
| 4076 bool includeHiddenLayers = false; | |
| 4077 #endif | |
| 4078 for (RenderLayer* child = firstChild(); child; child = child->nextSibling()) | 4073 for (RenderLayer* child = firstChild(); child; child = child->nextSibling()) |
| 4079 if (!m_reflection || reflectionLayer() != child) | 4074 if (!m_reflection || reflectionLayer() != child) |
| 4080 child->collectLayers(includeHiddenLayers, m_posZOrderList, m_negZOrd
erList); | 4075 child->collectLayers(m_posZOrderList, m_negZOrderList); |
| 4081 | 4076 |
| 4082 // Sort the two lists. | 4077 // Sort the two lists. |
| 4083 if (m_posZOrderList) | 4078 if (m_posZOrderList) |
| 4084 std::stable_sort(m_posZOrderList->begin(), m_posZOrderList->end(), compa
reZIndex); | 4079 std::stable_sort(m_posZOrderList->begin(), m_posZOrderList->end(), compa
reZIndex); |
| 4085 | 4080 |
| 4086 if (m_negZOrderList) | 4081 if (m_negZOrderList) |
| 4087 std::stable_sort(m_negZOrderList->begin(), m_negZOrderList->end(), compa
reZIndex); | 4082 std::stable_sort(m_negZOrderList->begin(), m_negZOrderList->end(), compa
reZIndex); |
| 4088 | 4083 |
| 4089 m_zOrderListsDirty = false; | 4084 m_zOrderListsDirty = false; |
| 4090 } | 4085 } |
| 4091 | 4086 |
| 4092 void RenderLayer::updateNormalFlowList() | 4087 void RenderLayer::updateNormalFlowList() |
| 4093 { | 4088 { |
| 4094 if (!m_normalFlowListDirty) | 4089 if (!m_normalFlowListDirty) |
| 4095 return; | 4090 return; |
| 4096 | 4091 |
| 4097 for (RenderLayer* child = firstChild(); child; child = child->nextSibling())
{ | 4092 for (RenderLayer* child = firstChild(); child; child = child->nextSibling())
{ |
| 4098 // Ignore non-overflow layers and reflections. | 4093 // Ignore non-overflow layers and reflections. |
| 4099 if (child->isNormalFlowOnly() && (!m_reflection || reflectionLayer() !=
child)) { | 4094 if (child->isNormalFlowOnly() && (!m_reflection || reflectionLayer() !=
child)) { |
| 4100 if (!m_normalFlowList) | 4095 if (!m_normalFlowList) |
| 4101 m_normalFlowList = new Vector<RenderLayer*>; | 4096 m_normalFlowList = new Vector<RenderLayer*>; |
| 4102 m_normalFlowList->append(child); | 4097 m_normalFlowList->append(child); |
| 4103 } | 4098 } |
| 4104 } | 4099 } |
| 4105 | 4100 |
| 4106 m_normalFlowListDirty = false; | 4101 m_normalFlowListDirty = false; |
| 4107 } | 4102 } |
| 4108 | 4103 |
| 4109 void RenderLayer::collectLayers(bool includeHiddenLayers, Vector<RenderLayer*>*&
posBuffer, Vector<RenderLayer*>*& negBuffer) | 4104 void RenderLayer::collectLayers(Vector<RenderLayer*>*& posBuffer, Vector<RenderL
ayer*>*& negBuffer) |
| 4110 { | 4105 { |
| 4111 updateVisibilityStatus(); | 4106 updateVisibilityStatus(); |
| 4112 | 4107 |
| 4113 // Overflow layers are just painted by their enclosing layers, so they don't
get put in zorder lists. | 4108 // Overflow layers are just painted by their enclosing layers, so they don't
get put in zorder lists. |
| 4114 bool includeHiddenLayer = includeHiddenLayers || (m_hasVisibleContent || (m_
hasVisibleDescendant && isStackingContext())); | 4109 if ((m_hasVisibleContent || (m_hasVisibleDescendant && isStackingContext()))
&& !isNormalFlowOnly() && !renderer()->isRenderFlowThread()) { |
| 4115 if (includeHiddenLayer && !isNormalFlowOnly() && !renderer()->isRenderFlowTh
read()) { | |
| 4116 // Determine which buffer the child should be in. | 4110 // Determine which buffer the child should be in. |
| 4117 Vector<RenderLayer*>*& buffer = (zIndex() >= 0) ? posBuffer : negBuffer; | 4111 Vector<RenderLayer*>*& buffer = (zIndex() >= 0) ? posBuffer : negBuffer; |
| 4118 | 4112 |
| 4119 // Create the buffer if it doesn't exist yet. | 4113 // Create the buffer if it doesn't exist yet. |
| 4120 if (!buffer) | 4114 if (!buffer) |
| 4121 buffer = new Vector<RenderLayer*>; | 4115 buffer = new Vector<RenderLayer*>; |
| 4122 | 4116 |
| 4123 // Append ourselves at the end of the appropriate buffer. | 4117 // Append ourselves at the end of the appropriate buffer. |
| 4124 buffer->append(this); | 4118 buffer->append(this); |
| 4125 } | 4119 } |
| 4126 | 4120 |
| 4127 // Recur into our children to collect more layers, but only if we don't esta
blish | 4121 // Recur into our children to collect more layers, but only if we don't esta
blish |
| 4128 // a stacking context. | 4122 // a stacking context. |
| 4129 if ((includeHiddenLayers || m_hasVisibleDescendant) && !isStackingContext())
{ | 4123 if (m_hasVisibleDescendant && !isStackingContext()) { |
| 4130 for (RenderLayer* child = firstChild(); child; child = child->nextSiblin
g()) { | 4124 for (RenderLayer* child = firstChild(); child; child = child->nextSiblin
g()) { |
| 4131 // Ignore reflections. | 4125 // Ignore reflections. |
| 4132 if (!m_reflection || reflectionLayer() != child) | 4126 if (!m_reflection || reflectionLayer() != child) |
| 4133 child->collectLayers(includeHiddenLayers, posBuffer, negBuffer); | 4127 child->collectLayers(posBuffer, negBuffer); |
| 4134 } | 4128 } |
| 4135 } | 4129 } |
| 4136 } | 4130 } |
| 4137 | 4131 |
| 4138 void RenderLayer::updateLayerListsIfNeeded() | 4132 void RenderLayer::updateLayerListsIfNeeded() |
| 4139 { | 4133 { |
| 4140 updateZOrderLists(); | 4134 updateZOrderLists(); |
| 4141 updateNormalFlowList(); | 4135 updateNormalFlowList(); |
| 4142 } | 4136 } |
| 4143 | 4137 |
| (...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4440 } | 4434 } |
| 4441 } | 4435 } |
| 4442 | 4436 |
| 4443 void showLayerTree(const WebCore::RenderObject* renderer) | 4437 void showLayerTree(const WebCore::RenderObject* renderer) |
| 4444 { | 4438 { |
| 4445 if (!renderer) | 4439 if (!renderer) |
| 4446 return; | 4440 return; |
| 4447 showLayerTree(renderer->enclosingLayer()); | 4441 showLayerTree(renderer->enclosingLayer()); |
| 4448 } | 4442 } |
| 4449 #endif | 4443 #endif |
| OLD | NEW |