Title: [170944] trunk/Source/WebCore
Revision
170944
Author
simon.fra...@apple.com
Date
2014-07-09 18:01:52 -0700 (Wed, 09 Jul 2014)

Log Message

Make IndirectCompositingReason an enum class
https://bugs.webkit.org/show_bug.cgi?id=134789

Reviewed by Tim Horton.

Make RenderLayer::IndirectCompositingReason an enum class, and change some code
in RenderLayerCompositor::reasonsForCompositing() to use a switch.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::RenderLayer):
* rendering/RenderLayer.h:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::computeCompositingRequirements):
(WebCore::RenderLayerCompositor::requiresOwnBackingStore):
(WebCore::RenderLayerCompositor::reasonsForCompositing):
(WebCore::RenderLayerCompositor::requiresCompositingForIndirectReason):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (170943 => 170944)


--- trunk/Source/WebCore/ChangeLog	2014-07-10 00:50:25 UTC (rev 170943)
+++ trunk/Source/WebCore/ChangeLog	2014-07-10 01:01:52 UTC (rev 170944)
@@ -1,3 +1,22 @@
+2014-07-09  Simon Fraser  <simon.fra...@apple.com>
+
+        Make IndirectCompositingReason an enum class
+        https://bugs.webkit.org/show_bug.cgi?id=134789
+
+        Reviewed by Tim Horton.
+
+        Make RenderLayer::IndirectCompositingReason an enum class, and change some code
+        in RenderLayerCompositor::reasonsForCompositing() to use a switch.
+
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::RenderLayer):
+        * rendering/RenderLayer.h:
+        * rendering/RenderLayerCompositor.cpp:
+        (WebCore::RenderLayerCompositor::computeCompositingRequirements):
+        (WebCore::RenderLayerCompositor::requiresOwnBackingStore):
+        (WebCore::RenderLayerCompositor::reasonsForCompositing):
+        (WebCore::RenderLayerCompositor::requiresCompositingForIndirectReason):
+
 2014-07-09  Pratik Solanki  <psola...@apple.com>
 
         Make SharedBuffer::append(SharedBuffer*) be smarter about CFData and data arrays

Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (170943 => 170944)


--- trunk/Source/WebCore/rendering/RenderLayer.cpp	2014-07-10 00:50:25 UTC (rev 170943)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp	2014-07-10 01:01:52 UTC (rev 170944)
@@ -168,7 +168,7 @@
     , m_hasCompositingDescendant(false)
     , m_hasTransformedAncestor(false)
     , m_has3DTransformedAncestor(false)
-    , m_indirectCompositingReason(NoIndirectCompositingReason)
+    , m_indirectCompositingReason(static_cast<unsigned>(IndirectCompositingReason::None))
     , m_viewportConstrainedNotCompositedReason(NoNotCompositedReason)
 #if PLATFORM(IOS)
     , m_adjustForIOSCaretWhenScrolling(false)

Modified: trunk/Source/WebCore/rendering/RenderLayer.h (170943 => 170944)


--- trunk/Source/WebCore/rendering/RenderLayer.h	2014-07-10 00:50:25 UTC (rev 170943)
+++ trunk/Source/WebCore/rendering/RenderLayer.h	2014-07-10 01:01:52 UTC (rev 170944)
@@ -1149,17 +1149,17 @@
 
     void setHasCompositingDescendant(bool b)  { m_hasCompositingDescendant = b; }
     
-    enum IndirectCompositingReason {
-        NoIndirectCompositingReason,
-        IndirectCompositingForStacking,
-        IndirectCompositingForOverlap,
-        IndirectCompositingForBackgroundLayer,
-        IndirectCompositingForGraphicalEffect, // opacity, mask, filter, transform etc.
-        IndirectCompositingForPerspective,
-        IndirectCompositingForPreserve3D
+    enum class IndirectCompositingReason {
+        None,
+        Stacking,
+        Overlap,
+        BackgroundLayer,
+        GraphicalEffect, // opacity, mask, filter, transform etc.
+        Perspective,
+        Preserve3D
     };
     
-    void setIndirectCompositingReason(IndirectCompositingReason reason) { m_indirectCompositingReason = reason; }
+    void setIndirectCompositingReason(IndirectCompositingReason reason) { m_indirectCompositingReason = static_cast<unsigned>(reason); }
     IndirectCompositingReason indirectCompositingReason() const { return static_cast<IndirectCompositingReason>(m_indirectCompositingReason); }
     bool mustCompositeForIndirectReasons() const { return m_indirectCompositingReason; }
 

Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp (170943 => 170944)


--- trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp	2014-07-10 00:50:25 UTC (rev 170943)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp	2014-07-10 01:01:52 UTC (rev 170944)
@@ -1121,14 +1121,14 @@
     
     // Clear the flag
     layer.setHasCompositingDescendant(false);
-    layer.setIndirectCompositingReason(RenderLayer::NoIndirectCompositingReason);
+    layer.setIndirectCompositingReason(RenderLayer::IndirectCompositingReason::None);
 
     // Check if the layer needs to be composited for non-indirect reasons (ex. 3D transform).
     // We use this value to avoid checking the overlap-map, if we know for sure the layer
     // is already going to be composited for other reasons.
     bool willBeComposited = needsToBeComposited(layer);
 
-    RenderLayer::IndirectCompositingReason compositingReason = compositingState.m_subtreeIsCompositing ? RenderLayer::IndirectCompositingForStacking : RenderLayer::NoIndirectCompositingReason;
+    RenderLayer::IndirectCompositingReason compositingReason = compositingState.m_subtreeIsCompositing ? RenderLayer::IndirectCompositingReason::Stacking : RenderLayer::IndirectCompositingReason::None;
     bool haveComputedBounds = false;
     IntRect absBounds;
 
@@ -1141,7 +1141,7 @@
         if (absBounds.isEmpty())
             absBounds.setSize(IntSize(1, 1));
         haveComputedBounds = true;
-        compositingReason = overlapMap->overlapsLayers(absBounds) ? RenderLayer::IndirectCompositingForOverlap : RenderLayer::NoIndirectCompositingReason;
+        compositingReason = overlapMap->overlapsLayers(absBounds) ? RenderLayer::IndirectCompositingReason::Overlap : RenderLayer::IndirectCompositingReason::None;
     }
 
 #if ENABLE(VIDEO)
@@ -1150,7 +1150,7 @@
     // into. These children (the controls) always need to be promoted into their
     // own layers to draw on top of the accelerated video.
     if (compositingState.m_compositingAncestor && compositingState.m_compositingAncestor->renderer().isVideo())
-        compositingReason = RenderLayer::IndirectCompositingForOverlap;
+        compositingReason = RenderLayer::IndirectCompositingReason::Overlap;
 #endif
 
     layer.setIndirectCompositingReason(compositingReason);
@@ -1197,7 +1197,7 @@
                 // (since we need to ensure that the -ve z-order child renders underneath our contents).
                 if (!willBeComposited && childState.m_subtreeIsCompositing) {
                     // make layer compositing
-                    layer.setIndirectCompositingReason(RenderLayer::IndirectCompositingForBackgroundLayer);
+                    layer.setIndirectCompositingReason(RenderLayer::IndirectCompositingReason::BackgroundLayer);
                     childState.m_compositingAncestor = &layer;
                     if (overlapMap)
                         overlapMap->pushCompositingContainer();
@@ -1268,7 +1268,7 @@
     ASSERT(willBeComposited == needsToBeComposited(layer));
     if (layer.reflectionLayer()) {
         // FIXME: Shouldn't we call computeCompositingRequirements to handle a reflection overlapping with another renderer?
-        layer.reflectionLayer()->setIndirectCompositingReason(willBeComposited ? RenderLayer::IndirectCompositingForStacking : RenderLayer::NoIndirectCompositingReason);
+        layer.reflectionLayer()->setIndirectCompositingReason(willBeComposited ? RenderLayer::IndirectCompositingReason::Stacking : RenderLayer::IndirectCompositingReason::None);
     }
 
     // Subsequent layers in the parent stacking context also need to composite.
@@ -2111,11 +2111,11 @@
     
     if (layer.mustCompositeForIndirectReasons()) {
         RenderLayer::IndirectCompositingReason reason = layer.indirectCompositingReason();
-        return reason == RenderLayer::IndirectCompositingForOverlap
-            || reason == RenderLayer::IndirectCompositingForStacking
-            || reason == RenderLayer::IndirectCompositingForBackgroundLayer
-            || reason == RenderLayer::IndirectCompositingForGraphicalEffect
-            || reason == RenderLayer::IndirectCompositingForPreserve3D; // preserve-3d has to create backing store to ensure that 3d-transformed elements intersect.
+        return reason == RenderLayer::IndirectCompositingReason::Overlap
+            || reason == RenderLayer::IndirectCompositingReason::Stacking
+            || reason == RenderLayer::IndirectCompositingReason::BackgroundLayer
+            || reason == RenderLayer::IndirectCompositingReason::GraphicalEffect
+            || reason == RenderLayer::IndirectCompositingReason::Preserve3D; // preserve-3d has to create backing store to ensure that 3d-transformed elements intersect.
     }
 
     if (!ancestorCompositedBounds.contains(layerCompositedBoundsInAncestor))
@@ -2170,13 +2170,19 @@
     if (requiresCompositingForOverflowScrolling(*renderer->layer()))
         reasons |= CompositingReasonOverflowScrollingTouch;
 
-    if (renderer->layer()->indirectCompositingReason() == RenderLayer::IndirectCompositingForStacking)
+    switch (renderer->layer()->indirectCompositingReason()) {
+    case RenderLayer::IndirectCompositingReason::None:
+        break;
+    case RenderLayer::IndirectCompositingReason::Stacking:
         reasons |= CompositingReasonStacking;
-    else if (renderer->layer()->indirectCompositingReason() == RenderLayer::IndirectCompositingForOverlap)
+        break;
+    case RenderLayer::IndirectCompositingReason::Overlap:
         reasons |= CompositingReasonOverlap;
-    else if (renderer->layer()->indirectCompositingReason() == RenderLayer::IndirectCompositingForBackgroundLayer)
+        break;
+    case RenderLayer::IndirectCompositingReason::BackgroundLayer:
         reasons |= CompositingReasonNegativeZIndexChildren;
-    else if (renderer->layer()->indirectCompositingReason() == RenderLayer::IndirectCompositingForGraphicalEffect) {
+        break;
+    case RenderLayer::IndirectCompositingReason::GraphicalEffect:
         if (renderer->layer()->transform())
             reasons |= CompositingReasonTransformWithCompositedDescendants;
 
@@ -2199,11 +2205,14 @@
         if (layer.hasBlendMode())
             reasons |= CompositingReasonBlendingWithCompositedDescendants;
 #endif
-
-    } else if (renderer->layer()->indirectCompositingReason() == RenderLayer::IndirectCompositingForPerspective)
+        break;
+    case RenderLayer::IndirectCompositingReason::Perspective:
         reasons |= CompositingReasonPerspective;
-    else if (renderer->layer()->indirectCompositingReason() == RenderLayer::IndirectCompositingForPreserve3D)
+        break;
+    case RenderLayer::IndirectCompositingReason::Preserve3D:
         reasons |= CompositingReasonPreserve3D;
+        break;
+    }
 
     if (inCompositingMode() && renderer->layer()->isRootLayer())
         reasons |= CompositingReasonRoot;
@@ -2474,7 +2483,7 @@
     // When a layer has composited descendants, some effects, like 2d transforms, filters, masks etc must be implemented
     // via compositing so that they also apply to those composited descendants.
     if (hasCompositedDescendants && (layer.isolatesCompositedBlending() || layer.transform() || renderer.createsGroup() || renderer.hasReflection() || renderer.isRenderNamedFlowFragmentContainer())) {
-        reason = RenderLayer::IndirectCompositingForGraphicalEffect;
+        reason = RenderLayer::IndirectCompositingReason::GraphicalEffect;
         return true;
     }
 
@@ -2482,17 +2491,17 @@
     // will be affected by the preserve-3d or perspective.
     if (has3DTransformedDescendants) {
         if (renderer.style().transformStyle3D() == TransformStyle3DPreserve3D) {
-            reason = RenderLayer::IndirectCompositingForPreserve3D;
+            reason = RenderLayer::IndirectCompositingReason::Preserve3D;
             return true;
         }
     
         if (renderer.style().hasPerspective()) {
-            reason = RenderLayer::IndirectCompositingForPerspective;
+            reason = RenderLayer::IndirectCompositingReason::Perspective;
             return true;
         }
     }
 
-    reason = RenderLayer::NoIndirectCompositingReason;
+    reason = RenderLayer::IndirectCompositingReason::None;
     return false;
 }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to