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

Side by Side Diff: third_party/WebKit/WebCore/rendering/RenderLayerCompositor.cpp

Issue 21184: WebKit merge 40722:40785 (part 1) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 11 years, 10 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2009 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 435 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 if (m_rootPlatformLayer) 446 if (m_rootPlatformLayer)
447 m_rootPlatformLayer->addChild(layerAnchor); 447 m_rootPlatformLayer->addChild(layerAnchor);
448 } 448 }
449 } 449 }
450 450
451 void RenderLayerCompositor::rebuildCompositingLayerTree(RenderLayer* layer, stru ct CompositingState& ioCompState) 451 void RenderLayerCompositor::rebuildCompositingLayerTree(RenderLayer* layer, stru ct CompositingState& ioCompState)
452 { 452 {
453 updateLayerCompositingState(layer, StyleDifferenceEqual); 453 updateLayerCompositingState(layer, StyleDifferenceEqual);
454 454
455 // host the document layer in the RenderView's root layer 455 // host the document layer in the RenderView's root layer
456 if (layer->isDocumentLayer()) 456 if (layer->isRootLayer())
457 parentInRootLayer(layer); 457 parentInRootLayer(layer);
458 458
459 CompositingState childState = ioCompState; 459 CompositingState childState = ioCompState;
460 if (layer->isComposited()) 460 if (layer->isComposited())
461 childState.m_compositingAncestor = layer; 461 childState.m_compositingAncestor = layer;
462 462
463 #ifndef NDEBUG 463 #ifndef NDEBUG
464 ++childState.m_depth; 464 ++childState.m_depth;
465 #endif 465 #endif
466 466
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
630 630
631 // Note: this specifies whether the RL needs a compositing layer for intrinsic r easons. 631 // Note: this specifies whether the RL needs a compositing layer for intrinsic r easons.
632 // Use needsToBeComposited() to determine if a RL actually needs a compositing l ayer. 632 // Use needsToBeComposited() to determine if a RL actually needs a compositing l ayer.
633 // static 633 // static
634 bool RenderLayerCompositor::requiresCompositingLayer(const RenderLayer* layer) c onst 634 bool RenderLayerCompositor::requiresCompositingLayer(const RenderLayer* layer) c onst
635 { 635 {
636 // FIXME: cache the result of these tests? 636 // FIXME: cache the result of these tests?
637 #if VERBOSE_COMPOSITINGLAYER 637 #if VERBOSE_COMPOSITINGLAYER
638 bool gotReason = false; 638 bool gotReason = false;
639 639
640 if (!gotReason && inCompositingMode() && layer->isDocumentLayer()) { 640 if (!gotReason && inCompositingMode() && layer->isRootLayer()) {
641 fprintf(stderr, "RenderLayer %p requires compositing layer because: it's the document root\n", layer); 641 fprintf(stderr, "RenderLayer %p requires compositing layer because: it's the document root\n", layer);
642 gotReason = true; 642 gotReason = true;
643 } 643 }
644 644
645 if (!gotReason && requiresCompositingLayerForTransform(layer->renderer())) { 645 if (!gotReason && requiresCompositingLayerForTransform(layer->renderer())) {
646 fprintf(stderr, "RenderLayer %p requires compositing layer because: it h as 3d transform, perspective, backface, or animating transform\n", layer); 646 fprintf(stderr, "RenderLayer %p requires compositing layer because: it h as 3d transform, perspective, backface, or animating transform\n", layer);
647 gotReason = true; 647 gotReason = true;
648 } 648 }
649 649
650 if (!gotReason && clipsCompositingDescendants(layer)) { 650 if (!gotReason && clipsCompositingDescendants(layer)) {
651 fprintf(stderr, "RenderLayer %p requires compositing layer because: it h as overflow clip\n", layer); 651 fprintf(stderr, "RenderLayer %p requires compositing layer because: it h as overflow clip\n", layer);
652 gotReason = true; 652 gotReason = true;
653 } 653 }
654 654
655 if (!gotReason && requiresCompositingForAnimation(layer)) { 655 if (!gotReason && requiresCompositingForAnimation(layer)) {
656 fprintf(stderr, "RenderLayer %p requires compositing layer because: it h as a running transition for opacity or transform\n", layer); 656 fprintf(stderr, "RenderLayer %p requires compositing layer because: it h as a running transition for opacity or transform\n", layer);
657 gotReason = true; 657 gotReason = true;
658 } 658 }
659 659
660 if (!gotReason) 660 if (!gotReason)
661 fprintf(stderr, "RenderLayer %p does not require compositing layer\n", l ayer); 661 fprintf(stderr, "RenderLayer %p does not require compositing layer\n", l ayer);
662 #endif 662 #endif
663 663
664 // the root layer always has a compositing layer (for now). 664 // The root layer always has a compositing layer, but it may not have backin g.
665 return (inCompositingMode() && layer->isDocumentLayer()) || 665 return (inCompositingMode() && layer->isRootLayer()) ||
666 requiresCompositingLayerForTransform(layer->renderer()) || 666 requiresCompositingLayerForTransform(layer->renderer()) ||
667 clipsCompositingDescendants(layer) || 667 clipsCompositingDescendants(layer) ||
668 requiresCompositingForAnimation(layer); 668 requiresCompositingForAnimation(layer);
669 } 669 }
670 670
671 // Return true if the given layer has some ancestor in the RenderLayer hierarchy that clips, 671 // Return true if the given layer has some ancestor in the RenderLayer hierarchy that clips,
672 // up to the enclosing compositing ancestor. This is required because compositin g layers are parented 672 // up to the enclosing compositing ancestor. This is required because compositin g layers are parented
673 // according to the z-order hierarchy, yet clipping goes down the renderer hiera rchy. 673 // according to the z-order hierarchy, yet clipping goes down the renderer hiera rchy.
674 // Thus, a RenderLayer can be clipped by a RenderLayer that is an ancestor in th e renderer hierarchy, 674 // Thus, a RenderLayer can be clipped by a RenderLayer that is an ancestor in th e renderer hierarchy,
675 // but a sibling in the z-order hierarchy. 675 // but a sibling in the z-order hierarchy.
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
738 // Need to clip to prevent transformed content showing outside this frame 738 // Need to clip to prevent transformed content showing outside this frame
739 m_rootPlatformLayer->setMasksToBounds(true); 739 m_rootPlatformLayer->setMasksToBounds(true);
740 740
741 didMoveOnscreen(); 741 didMoveOnscreen();
742 } 742 }
743 743
744 } // namespace WebCore 744 } // namespace WebCore
745 745
746 #endif // USE(ACCELERATED_COMPOSITING) 746 #endif // USE(ACCELERATED_COMPOSITING)
747 747
OLDNEW
« no previous file with comments | « third_party/WebKit/WebCore/rendering/RenderLayerBacking.cpp ('k') | third_party/WebKit/WebCore/rendering/RenderLineBoxList.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698