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 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
289 | 289 |
290 // Remove irrelevant unclipped descendants in reverse order so our store
d | 290 // Remove irrelevant unclipped descendants in reverse order so our store
d |
291 // indices remain valid. | 291 // indices remain valid. |
292 for (size_t i = 0; i < unclippedDescendantsToRemove.size(); i++) | 292 for (size_t i = 0; i < unclippedDescendantsToRemove.size(); i++) |
293 unclippedDescendants.remove(unclippedDescendantsToRemove.at(unclippe
dDescendantsToRemove.size() - i - 1)); | 293 unclippedDescendants.remove(unclippedDescendantsToRemove.at(unclippe
dDescendantsToRemove.size() - i - 1)); |
294 | 294 |
295 if (reasonsToComposite & CompositingReasonOutOfFlowClipping) | 295 if (reasonsToComposite & CompositingReasonOutOfFlowClipping) |
296 unclippedDescendants.append(layer); | 296 unclippedDescendants.append(layer); |
297 } | 297 } |
298 | 298 |
299 const IntRect& absBounds = layer->ancestorDependentProperties().clippedAbsol
uteBoundingBox; | 299 const IntRect& absBounds = layer->compositingInputs().clippedAbsoluteBoundin
gBox; |
300 absoluteDecendantBoundingBox = absBounds; | 300 absoluteDecendantBoundingBox = absBounds; |
301 | 301 |
302 if (currentRecursionData.m_testingOverlap && !requiresCompositingOrSquashing
(directReasons)) | 302 if (currentRecursionData.m_testingOverlap && !requiresCompositingOrSquashing
(directReasons)) |
303 overlapCompositingReason = overlapMap.overlapsLayers(absBounds) ? Compos
itingReasonOverlap : CompositingReasonNone; | 303 overlapCompositingReason = overlapMap.overlapsLayers(absBounds) ? Compos
itingReasonOverlap : CompositingReasonNone; |
304 | 304 |
305 reasonsToComposite |= overlapCompositingReason; | 305 reasonsToComposite |= overlapCompositingReason; |
306 | 306 |
307 // The children of this layer don't need to composite, unless there is | 307 // The children of this layer don't need to composite, unless there is |
308 // a compositing layer among them, so start by inheriting the compositing | 308 // a compositing layer among them, so start by inheriting the compositing |
309 // ancestor with m_subtreeIsCompositing set to false. | 309 // ancestor with m_subtreeIsCompositing set to false. |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
349 // make layer compositing | 349 // make layer compositing |
350 childRecursionData.m_compositingAncestor = layer; | 350 childRecursionData.m_compositingAncestor = layer; |
351 overlapMap.beginNewOverlapTestingContext(); | 351 overlapMap.beginNewOverlapTestingContext(); |
352 willBeCompositedOrSquashed = true; | 352 willBeCompositedOrSquashed = true; |
353 willHaveForegroundLayer = true; | 353 willHaveForegroundLayer = true; |
354 | 354 |
355 // FIXME: temporary solution for the first negative z-index
composited child: | 355 // FIXME: temporary solution for the first negative z-index
composited child: |
356 // re-compute the absBounds for the child so that we
can add the | 356 // re-compute the absBounds for the child so that we
can add the |
357 // negative z-index child's bounds to the new overlap
context. | 357 // negative z-index child's bounds to the new overlap
context. |
358 overlapMap.beginNewOverlapTestingContext(); | 358 overlapMap.beginNewOverlapTestingContext(); |
359 overlapMap.add(curNode->layer(), curNode->layer()->ancestorD
ependentProperties().clippedAbsoluteBoundingBox); | 359 overlapMap.add(curNode->layer(), curNode->layer()->compositi
ngInputs().clippedAbsoluteBoundingBox); |
360 overlapMap.finishCurrentOverlapTestingContext(); | 360 overlapMap.finishCurrentOverlapTestingContext(); |
361 } | 361 } |
362 } | 362 } |
363 } | 363 } |
364 } | 364 } |
365 | 365 |
366 if (willHaveForegroundLayer) { | 366 if (willHaveForegroundLayer) { |
367 ASSERT(willBeCompositedOrSquashed); | 367 ASSERT(willBeCompositedOrSquashed); |
368 // A foreground layer effectively is a new backing for all subsequent ch
ildren, so | 368 // A foreground layer effectively is a new backing for all subsequent ch
ildren, so |
369 // we don't need to test for overlap with anything behind this. So, we c
an finish | 369 // we don't need to test for overlap with anything behind this. So, we c
an finish |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
456 layer->setCompositingReasons(reasonsToComposite); | 456 layer->setCompositingReasons(reasonsToComposite); |
457 | 457 |
458 } | 458 } |
459 | 459 |
460 bool CompositingRequirementsUpdater::isRunningAcceleratedTransformAnimation(Rend
erObject* renderer) const | 460 bool CompositingRequirementsUpdater::isRunningAcceleratedTransformAnimation(Rend
erObject* renderer) const |
461 { | 461 { |
462 return renderer->style()->hasCurrentTransformAnimation(); | 462 return renderer->style()->hasCurrentTransformAnimation(); |
463 } | 463 } |
464 | 464 |
465 } // namespace WebCore | 465 } // namespace WebCore |
OLD | NEW |