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 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 , m_hasAcceleratedCompositing(true) | 211 , m_hasAcceleratedCompositing(true) |
212 , m_compositingTriggers(static_cast<ChromeClient::CompositingTriggerFlags>(C
hromeClient::AllTriggers)) | 212 , m_compositingTriggers(static_cast<ChromeClient::CompositingTriggerFlags>(C
hromeClient::AllTriggers)) |
213 , m_compositedLayerCount(0) | 213 , m_compositedLayerCount(0) |
214 , m_showDebugBorders(false) | 214 , m_showDebugBorders(false) |
215 , m_showRepaintCounter(false) | 215 , m_showRepaintCounter(false) |
216 , m_reevaluateCompositingAfterLayout(false) | 216 , m_reevaluateCompositingAfterLayout(false) |
217 , m_compositing(false) | 217 , m_compositing(false) |
218 , m_compositingLayersNeedRebuild(false) | 218 , m_compositingLayersNeedRebuild(false) |
219 , m_forceCompositingMode(false) | 219 , m_forceCompositingMode(false) |
220 , m_inPostLayoutUpdate(false) | 220 , m_inPostLayoutUpdate(false) |
| 221 , m_needsUpdateCompositingRequirementsState(false) |
221 , m_isTrackingRepaints(false) | 222 , m_isTrackingRepaints(false) |
222 , m_rootLayerAttachment(RootLayerUnattached) | 223 , m_rootLayerAttachment(RootLayerUnattached) |
223 #if !LOG_DISABLED | 224 #if !LOG_DISABLED |
224 , m_rootLayerUpdateCount(0) | 225 , m_rootLayerUpdateCount(0) |
225 , m_obligateCompositedLayerCount(0) | 226 , m_obligateCompositedLayerCount(0) |
226 , m_secondaryCompositedLayerCount(0) | 227 , m_secondaryCompositedLayerCount(0) |
227 , m_obligatoryBackingStoreBytes(0) | 228 , m_obligatoryBackingStoreBytes(0) |
228 , m_secondaryBackingStoreBytes(0) | 229 , m_secondaryBackingStoreBytes(0) |
229 #endif | 230 #endif |
230 { | 231 { |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
323 if (Page* page = this->page()) | 324 if (Page* page = this->page()) |
324 page->chrome().client()->scheduleCompositingLayerFlush(); | 325 page->chrome().client()->scheduleCompositingLayerFlush(); |
325 } | 326 } |
326 } | 327 } |
327 | 328 |
328 bool RenderLayerCompositor::hasAnyAdditionalCompositedLayers(const RenderLayer*
rootLayer) const | 329 bool RenderLayerCompositor::hasAnyAdditionalCompositedLayers(const RenderLayer*
rootLayer) const |
329 { | 330 { |
330 return m_compositedLayerCount > (rootLayer->isComposited() ? 1 : 0); | 331 return m_compositedLayerCount > (rootLayer->isComposited() ? 1 : 0); |
331 } | 332 } |
332 | 333 |
| 334 void RenderLayerCompositor::updateCompositingRequirementsState() |
| 335 { |
| 336 TRACE_EVENT0("blink_rendering", "RenderLayerCompositor::updateCompositingReq
uirementsState"); |
| 337 |
| 338 if (!m_needsUpdateCompositingRequirementsState) |
| 339 return; |
| 340 |
| 341 m_needsUpdateCompositingRequirementsState = false; |
| 342 |
| 343 if (!rootRenderLayer() || !rootRenderLayer()->acceleratedCompositingForOverf
lowScrollEnabled()) |
| 344 return; |
| 345 |
| 346 const FrameView::ScrollableAreaSet* scrollableAreas = m_renderView->frameVie
w()->scrollableAreas(); |
| 347 if (!scrollableAreas) |
| 348 return; |
| 349 |
| 350 for (HashSet<RenderLayer*>::iterator it = m_outOfFlowPositionedLayers.begin(
); it != m_outOfFlowPositionedLayers.end(); ++it) |
| 351 (*it)->updateHasUnclippedDescendant(); |
| 352 |
| 353 for (FrameView::ScrollableAreaSet::iterator it = scrollableAreas->begin(); i
t != scrollableAreas->end(); ++it) |
| 354 (*it)->updateNeedsCompositedScrolling(); |
| 355 } |
| 356 |
333 void RenderLayerCompositor::updateCompositingLayers(CompositingUpdateType update
Type, RenderLayer* updateRoot) | 357 void RenderLayerCompositor::updateCompositingLayers(CompositingUpdateType update
Type, RenderLayer* updateRoot) |
334 { | 358 { |
335 // Avoid updating the layers with old values. Compositing layers will be upd
ated after the layout is finished. | 359 // Avoid updating the layers with old values. Compositing layers will be upd
ated after the layout is finished. |
336 if (m_renderView->needsLayout()) | 360 if (m_renderView->needsLayout()) |
337 return; | 361 return; |
338 | 362 |
339 if (m_forceCompositingMode && !m_compositing) | 363 if (m_forceCompositingMode && !m_compositing) |
340 enableCompositingMode(true); | 364 enableCompositingMode(true); |
341 | 365 |
342 if (!m_reevaluateCompositingAfterLayout && !m_compositing) | 366 if (!m_reevaluateCompositingAfterLayout && !m_compositing) |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
485 #ifndef NDEBUG | 509 #ifndef NDEBUG |
486 layerName = layer->debugName(); | 510 layerName = layer->debugName(); |
487 #endif | 511 #endif |
488 | 512 |
489 LOG(Compositing, "%*p %dx%d %.2fKB (%s) %s\n", 12 + depth * 2, layer, backin
g->compositedBounds().width(), backing->compositedBounds().height(), | 513 LOG(Compositing, "%*p %dx%d %.2fKB (%s) %s\n", 12 + depth * 2, layer, backin
g->compositedBounds().width(), backing->compositedBounds().height(), |
490 backing->backingStoreMemoryEstimate() / 1024, | 514 backing->backingStoreMemoryEstimate() / 1024, |
491 logReasonsForCompositing(layer), layerName.utf8().data()); | 515 logReasonsForCompositing(layer), layerName.utf8().data()); |
492 } | 516 } |
493 #endif | 517 #endif |
494 | 518 |
| 519 void RenderLayerCompositor::addOutOfFlowPositionedLayer(RenderLayer* layer) |
| 520 { |
| 521 m_outOfFlowPositionedLayers.add(layer); |
| 522 } |
| 523 |
| 524 void RenderLayerCompositor::removeOutOfFlowPositionedLayer(RenderLayer* layer) |
| 525 { |
| 526 m_outOfFlowPositionedLayers.remove(layer); |
| 527 } |
| 528 |
495 bool RenderLayerCompositor::updateBacking(RenderLayer* layer, CompositingChangeR
epaint shouldRepaint) | 529 bool RenderLayerCompositor::updateBacking(RenderLayer* layer, CompositingChangeR
epaint shouldRepaint) |
496 { | 530 { |
497 bool layerChanged = false; | 531 bool layerChanged = false; |
498 RenderLayer::ViewportConstrainedNotCompositedReason viewportConstrainedNotCo
mpositedReason = RenderLayer::NoNotCompositedReason; | 532 RenderLayer::ViewportConstrainedNotCompositedReason viewportConstrainedNotCo
mpositedReason = RenderLayer::NoNotCompositedReason; |
499 requiresCompositingForPosition(layer->renderer(), layer, &viewportConstraine
dNotCompositedReason); | 533 requiresCompositingForPosition(layer->renderer(), layer, &viewportConstraine
dNotCompositedReason); |
500 | 534 |
501 // FIXME: It would be nice to directly use the layer's compositing reason, | 535 // FIXME: It would be nice to directly use the layer's compositing reason, |
502 // but updateBacking() also gets called without having updated compositing | 536 // but updateBacking() also gets called without having updated compositing |
503 // requirements fully. | 537 // requirements fully. |
504 if (needsToBeComposited(layer)) { | 538 if (needsToBeComposited(layer)) { |
(...skipping 2222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2727 info.addMember(m_layerForScrollCorner, "layerForScrollCorner"); | 2761 info.addMember(m_layerForScrollCorner, "layerForScrollCorner"); |
2728 #if ENABLE(RUBBER_BANDING) | 2762 #if ENABLE(RUBBER_BANDING) |
2729 info.addMember(m_layerForOverhangAreas, "layerForOverhangAreas"); | 2763 info.addMember(m_layerForOverhangAreas, "layerForOverhangAreas"); |
2730 info.addMember(m_contentShadowLayer, "contentShadowLayer"); | 2764 info.addMember(m_contentShadowLayer, "contentShadowLayer"); |
2731 info.addMember(m_layerForTopOverhangArea, "layerForTopOverhangArea"); | 2765 info.addMember(m_layerForTopOverhangArea, "layerForTopOverhangArea"); |
2732 info.addMember(m_layerForBottomOverhangArea, "layerForBottomOverhangArea"); | 2766 info.addMember(m_layerForBottomOverhangArea, "layerForBottomOverhangArea"); |
2733 #endif | 2767 #endif |
2734 } | 2768 } |
2735 | 2769 |
2736 } // namespace WebCore | 2770 } // namespace WebCore |
OLD | NEW |