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 * Copyright (C) 2014 Google Inc. All rights reserved. | 3 * Copyright (C) 2014 Google Inc. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
389 reasonsToComposite |= layer->potentialCompositingReasonsFromStyle()
& CompositingReasonInlineTransform; | 389 reasonsToComposite |= layer->potentialCompositingReasonsFromStyle()
& CompositingReasonInlineTransform; |
390 | 390 |
391 // If the original layer is composited, the reflection needs to be, too. | 391 // If the original layer is composited, the reflection needs to be, too. |
392 if (layer->reflectionInfo()) { | 392 if (layer->reflectionInfo()) { |
393 // FIXME: Shouldn't we call computeCompositingRequirements to handle
a reflection overlapping with another renderer? | 393 // FIXME: Shouldn't we call computeCompositingRequirements to handle
a reflection overlapping with another renderer? |
394 RenderLayer* reflectionLayer = layer->reflectionInfo()->reflectionLa
yer(); | 394 RenderLayer* reflectionLayer = layer->reflectionInfo()->reflectionLa
yer(); |
395 CompositingReasons reflectionCompositingReason = willBeCompositedOrS
quashed ? CompositingReasonReflectionOfCompositedParent : CompositingReasonNone; | 395 CompositingReasons reflectionCompositingReason = willBeCompositedOrS
quashed ? CompositingReasonReflectionOfCompositedParent : CompositingReasonNone; |
396 reflectionLayer->setCompositingReasons(reflectionCompositingReason,
CompositingReasonReflectionOfCompositedParent); | 396 reflectionLayer->setCompositingReasons(reflectionCompositingReason,
CompositingReasonReflectionOfCompositedParent); |
397 } | 397 } |
398 | 398 |
399 if (willBeCompositedOrSquashed && layer->renderer()->hasBlendMode()) | 399 if (willBeCompositedOrSquashed && layer->renderer()->style()->hasBlendMo
de()) |
400 currentRecursionData.m_hasUnisolatedCompositedBlendingDescendant = t
rue; | 400 currentRecursionData.m_hasUnisolatedCompositedBlendingDescendant = t
rue; |
401 | 401 |
402 // Turn overlap testing off for later layers if it's already off, or if
we have an animating transform. | 402 // Turn overlap testing off for later layers if it's already off, or if
we have an animating transform. |
403 // Note that if the layer clips its descendants, there's no reason to pr
opagate the child animation to the parent layers. That's because | 403 // Note that if the layer clips its descendants, there's no reason to pr
opagate the child animation to the parent layers. That's because |
404 // we know for sure the animation is contained inside the clipping recta
ngle, which is already added to the overlap map. | 404 // we know for sure the animation is contained inside the clipping recta
ngle, which is already added to the overlap map. |
405 bool isCompositedClippingLayer = compositor->canBeComposited(layer) && (
reasonsToComposite & CompositingReasonClipsCompositingDescendants); | 405 bool isCompositedClippingLayer = compositor->canBeComposited(layer) && (
reasonsToComposite & CompositingReasonClipsCompositingDescendants); |
406 bool isCompositedWithInlineTransform = reasonsToComposite & CompositingR
easonInlineTransform; | 406 bool isCompositedWithInlineTransform = reasonsToComposite & CompositingR
easonInlineTransform; |
407 if ((!childRecursionData.m_testingOverlap && !isCompositedClippingLayer)
|| layer->renderer()->style()->hasCurrentTransformAnimation() || isCompositedWi
thInlineTransform) | 407 if ((!childRecursionData.m_testingOverlap && !isCompositedClippingLayer)
|| layer->renderer()->style()->hasCurrentTransformAnimation() || isCompositedWi
thInlineTransform) |
408 currentRecursionData.m_testingOverlap = false; | 408 currentRecursionData.m_testingOverlap = false; |
409 | 409 |
410 if (childRecursionData.m_compositingAncestor == layer) | 410 if (childRecursionData.m_compositingAncestor == layer) |
411 overlapMap.finishCurrentOverlapTestingContext(); | 411 overlapMap.finishCurrentOverlapTestingContext(); |
412 | 412 |
413 descendantHas3DTransform |= anyDescendantHas3DTransform || layer->has3DT
ransform(); | 413 descendantHas3DTransform |= anyDescendantHas3DTransform || layer->has3DT
ransform(); |
414 } | 414 } |
415 | 415 |
416 // At this point we have finished collecting all reasons to composite this l
ayer. | 416 // At this point we have finished collecting all reasons to composite this l
ayer. |
417 layer->setCompositingReasons(reasonsToComposite); | 417 layer->setCompositingReasons(reasonsToComposite); |
418 | 418 |
419 } | 419 } |
420 | 420 |
421 } // namespace blink | 421 } // namespace blink |
OLD | NEW |