Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(553)

Side by Side Diff: Source/core/rendering/RenderLayerCompositor.cpp

Issue 14863002: Only update composited-scrolling state once after layout. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: updating expectations. Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/rendering/RenderLayerCompositor.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
OLDNEW
« no previous file with comments | « Source/core/rendering/RenderLayerCompositor.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698