OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009, 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009, 2010 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 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
197 // which asserts that it's not InCompositingUpdate. | 197 // which asserts that it's not InCompositingUpdate. |
198 enableCompositingModeIfNeeded(); | 198 enableCompositingModeIfNeeded(); |
199 rootRenderLayer()->updateDescendantDependentFlags(); | 199 rootRenderLayer()->updateDescendantDependentFlags(); |
200 | 200 |
201 lifecycle().advanceTo(DocumentLifecycle::InCompositingUpdate); | 201 lifecycle().advanceTo(DocumentLifecycle::InCompositingUpdate); |
202 updateIfNeeded(); | 202 updateIfNeeded(); |
203 lifecycle().advanceTo(DocumentLifecycle::CompositingClean); | 203 lifecycle().advanceTo(DocumentLifecycle::CompositingClean); |
204 | 204 |
205 DocumentAnimations::startPendingAnimations(m_renderView.document()); | 205 DocumentAnimations::startPendingAnimations(m_renderView.document()); |
206 | 206 |
207 #if ASSERT_ENABLED | 207 #if ENABLE(ASSERT) |
208 ASSERT(lifecycle().state() == DocumentLifecycle::CompositingClean); | 208 ASSERT(lifecycle().state() == DocumentLifecycle::CompositingClean); |
209 assertNoUnresolvedDirtyBits(); | 209 assertNoUnresolvedDirtyBits(); |
210 for (Frame* child = m_renderView.frameView()->frame().tree().firstChild(); c
hild; child = child->tree().nextSibling()) { | 210 for (Frame* child = m_renderView.frameView()->frame().tree().firstChild(); c
hild; child = child->tree().nextSibling()) { |
211 if (child->isLocalFrame()) | 211 if (child->isLocalFrame()) |
212 toLocalFrame(child)->contentRenderer()->compositor()->assertNoUnreso
lvedDirtyBits(); | 212 toLocalFrame(child)->contentRenderer()->compositor()->assertNoUnreso
lvedDirtyBits(); |
213 } | 213 } |
214 #endif | 214 #endif |
215 } | 215 } |
216 | 216 |
217 void RenderLayerCompositor::setNeedsCompositingUpdate(CompositingUpdateType upda
teType) | 217 void RenderLayerCompositor::setNeedsCompositingUpdate(CompositingUpdateType upda
teType) |
(...skipping 10 matching lines...) Expand all Loading... |
228 // isScrollable method would return a different value. | 228 // isScrollable method would return a different value. |
229 m_rootShouldAlwaysCompositeDirty = true; | 229 m_rootShouldAlwaysCompositeDirty = true; |
230 enableCompositingModeIfNeeded(); | 230 enableCompositingModeIfNeeded(); |
231 | 231 |
232 // FIXME: Rather than marking the entire RenderView as dirty, we should | 232 // FIXME: Rather than marking the entire RenderView as dirty, we should |
233 // track which RenderLayers moved during layout and only dirty those | 233 // track which RenderLayers moved during layout and only dirty those |
234 // specific RenderLayers. | 234 // specific RenderLayers. |
235 rootRenderLayer()->setNeedsCompositingInputsUpdate(); | 235 rootRenderLayer()->setNeedsCompositingInputsUpdate(); |
236 } | 236 } |
237 | 237 |
238 #if ASSERT_ENABLED | 238 #if ENABLE(ASSERT) |
239 | 239 |
240 void RenderLayerCompositor::assertNoUnresolvedDirtyBits() | 240 void RenderLayerCompositor::assertNoUnresolvedDirtyBits() |
241 { | 241 { |
242 ASSERT(m_pendingUpdateType == CompositingUpdateNone); | 242 ASSERT(m_pendingUpdateType == CompositingUpdateNone); |
243 ASSERT(!m_rootShouldAlwaysCompositeDirty); | 243 ASSERT(!m_rootShouldAlwaysCompositeDirty); |
244 } | 244 } |
245 | 245 |
246 #endif | 246 #endif |
247 | 247 |
248 void RenderLayerCompositor::applyOverlayFullscreenVideoAdjustment() | 248 void RenderLayerCompositor::applyOverlayFullscreenVideoAdjustment() |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
287 if (!hasAcceleratedCompositing() || updateType == CompositingUpdateNone) | 287 if (!hasAcceleratedCompositing() || updateType == CompositingUpdateNone) |
288 return; | 288 return; |
289 | 289 |
290 RenderLayer* updateRoot = rootRenderLayer(); | 290 RenderLayer* updateRoot = rootRenderLayer(); |
291 | 291 |
292 Vector<RenderLayer*> layersNeedingRepaint; | 292 Vector<RenderLayer*> layersNeedingRepaint; |
293 | 293 |
294 if (updateType >= CompositingUpdateAfterCompositingInputChange) { | 294 if (updateType >= CompositingUpdateAfterCompositingInputChange) { |
295 CompositingInputsUpdater(updateRoot).update(); | 295 CompositingInputsUpdater(updateRoot).update(); |
296 | 296 |
297 #if ASSERT_ENABLED | 297 #if ENABLE(ASSERT) |
298 // FIXME: Move this check to the end of the compositing update. | 298 // FIXME: Move this check to the end of the compositing update. |
299 CompositingInputsUpdater::assertNeedsCompositingInputsUpdateBitsCleared(
updateRoot); | 299 CompositingInputsUpdater::assertNeedsCompositingInputsUpdateBitsCleared(
updateRoot); |
300 #endif | 300 #endif |
301 | 301 |
302 CompositingRequirementsUpdater(m_renderView, m_compositingReasonFinder).
update(updateRoot); | 302 CompositingRequirementsUpdater(m_renderView, m_compositingReasonFinder).
update(updateRoot); |
303 | 303 |
304 CompositingLayerAssigner layerAssigner(this); | 304 CompositingLayerAssigner layerAssigner(this); |
305 layerAssigner.assign(updateRoot, layersNeedingRepaint); | 305 layerAssigner.assign(updateRoot, layersNeedingRepaint); |
306 | 306 |
307 bool layersChanged = layerAssigner.layersChanged(); | 307 bool layersChanged = layerAssigner.layersChanged(); |
(...skipping 10 matching lines...) Expand all Loading... |
318 updateType = std::max(updateType, CompositingUpdateRebuildTree); | 318 updateType = std::max(updateType, CompositingUpdateRebuildTree); |
319 } | 319 } |
320 | 320 |
321 if (updateType != CompositingUpdateNone) { | 321 if (updateType != CompositingUpdateNone) { |
322 GraphicsLayerUpdater updater; | 322 GraphicsLayerUpdater updater; |
323 updater.update(*updateRoot, layersNeedingRepaint); | 323 updater.update(*updateRoot, layersNeedingRepaint); |
324 | 324 |
325 if (updater.needsRebuildTree()) | 325 if (updater.needsRebuildTree()) |
326 updateType = std::max(updateType, CompositingUpdateRebuildTree); | 326 updateType = std::max(updateType, CompositingUpdateRebuildTree); |
327 | 327 |
328 #if ASSERT_ENABLED | 328 #if ENABLE(ASSERT) |
329 // FIXME: Move this check to the end of the compositing update. | 329 // FIXME: Move this check to the end of the compositing update. |
330 GraphicsLayerUpdater::assertNeedsToUpdateGraphicsLayerBitsCleared(*updat
eRoot); | 330 GraphicsLayerUpdater::assertNeedsToUpdateGraphicsLayerBitsCleared(*updat
eRoot); |
331 #endif | 331 #endif |
332 } | 332 } |
333 | 333 |
334 if (updateType >= CompositingUpdateRebuildTree) { | 334 if (updateType >= CompositingUpdateRebuildTree) { |
335 GraphicsLayerTreeBuilder::AncestorInfo ancestorInfo; | 335 GraphicsLayerTreeBuilder::AncestorInfo ancestorInfo; |
336 GraphicsLayerVector childList; | 336 GraphicsLayerVector childList; |
337 ancestorInfo.childLayersOfEnclosingCompositedLayer = &childList; | 337 ancestorInfo.childLayersOfEnclosingCompositedLayer = &childList; |
338 { | 338 { |
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
625 // FIXME: This method does not work correctly with transforms. | 625 // FIXME: This method does not work correctly with transforms. |
626 if (layer->compositingState() == PaintsIntoOwnBacking) { | 626 if (layer->compositingState() == PaintsIntoOwnBacking) { |
627 layer->compositedLayerMapping()->setContentsNeedDisplay(); | 627 layer->compositedLayerMapping()->setContentsNeedDisplay(); |
628 // This function is called only when it is desired to repaint the entire
compositing graphics layer tree. | 628 // This function is called only when it is desired to repaint the entire
compositing graphics layer tree. |
629 // This includes squashing. | 629 // This includes squashing. |
630 layer->compositedLayerMapping()->setSquashingContentsNeedDisplay(); | 630 layer->compositedLayerMapping()->setSquashingContentsNeedDisplay(); |
631 } | 631 } |
632 | 632 |
633 layer->stackingNode()->updateLayerListsIfNeeded(); | 633 layer->stackingNode()->updateLayerListsIfNeeded(); |
634 | 634 |
635 #if ASSERT_ENABLED | 635 #if ENABLE(ASSERT) |
636 LayerListMutationDetector mutationChecker(layer->stackingNode()); | 636 LayerListMutationDetector mutationChecker(layer->stackingNode()); |
637 #endif | 637 #endif |
638 | 638 |
639 unsigned childrenToVisit = NormalFlowChildren; | 639 unsigned childrenToVisit = NormalFlowChildren; |
640 if (layer->hasCompositingDescendant()) | 640 if (layer->hasCompositingDescendant()) |
641 childrenToVisit |= PositiveZOrderChildren | NegativeZOrderChildren; | 641 childrenToVisit |= PositiveZOrderChildren | NegativeZOrderChildren; |
642 RenderLayerStackingNodeIterator iterator(*layer->stackingNode(), childrenToV
isit); | 642 RenderLayerStackingNodeIterator iterator(*layer->stackingNode(), childrenToV
isit); |
643 while (RenderLayerStackingNode* curNode = iterator.next()) | 643 while (RenderLayerStackingNode* curNode = iterator.next()) |
644 recursiveRepaintLayer(curNode->layer()); | 644 recursiveRepaintLayer(curNode->layer()); |
645 } | 645 } |
(...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1167 } else if (graphicsLayer == m_scrollLayer.get()) { | 1167 } else if (graphicsLayer == m_scrollLayer.get()) { |
1168 name = "LocalFrame Scrolling Layer"; | 1168 name = "LocalFrame Scrolling Layer"; |
1169 } else { | 1169 } else { |
1170 ASSERT_NOT_REACHED(); | 1170 ASSERT_NOT_REACHED(); |
1171 } | 1171 } |
1172 | 1172 |
1173 return name; | 1173 return name; |
1174 } | 1174 } |
1175 | 1175 |
1176 } // namespace WebCore | 1176 } // namespace WebCore |
OLD | NEW |