| OLD | NEW |
| 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 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 64 #include <cmath> | 64 #include <cmath> |
| 65 #include <memory> | 65 #include <memory> |
| 66 #include <utility> | 66 #include <utility> |
| 67 | 67 |
| 68 #ifndef NDEBUG | 68 #ifndef NDEBUG |
| 69 #include <stdio.h> | 69 #include <stdio.h> |
| 70 #endif | 70 #endif |
| 71 | 71 |
| 72 namespace blink { | 72 namespace blink { |
| 73 | 73 |
| 74 static bool s_drawDebugRedFill = true; | |
| 75 | |
| 76 struct PaintInvalidationInfo { | 74 struct PaintInvalidationInfo { |
| 77 DISALLOW_NEW_EXCEPT_PLACEMENT_NEW(); | 75 DISALLOW_NEW_EXCEPT_PLACEMENT_NEW(); |
| 78 // This is for comparison only. Don't dereference because the client may hav
e died. | 76 // This is for comparison only. Don't dereference because the client may hav
e died. |
| 79 const DisplayItemClient* client; | 77 const DisplayItemClient* client; |
| 80 String clientDebugName; | 78 String clientDebugName; |
| 81 IntRect rect; | 79 IntRect rect; |
| 82 PaintInvalidationReason reason; | 80 PaintInvalidationReason reason; |
| 83 }; | 81 }; |
| 84 | 82 |
| 85 #if DCHECK_IS_ON() | 83 #if DCHECK_IS_ON() |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 185 LayoutRect bounds = LayoutRect(FloatPoint(), size()); | 183 LayoutRect bounds = LayoutRect(FloatPoint(), size()); |
| 186 bounds.move(offsetFromLayoutObjectWithSubpixelAccumulation()); | 184 bounds.move(offsetFromLayoutObjectWithSubpixelAccumulation()); |
| 187 return bounds; | 185 return bounds; |
| 188 } | 186 } |
| 189 | 187 |
| 190 void GraphicsLayer::setHasWillChangeTransformHint(bool hasWillChangeTransform) | 188 void GraphicsLayer::setHasWillChangeTransformHint(bool hasWillChangeTransform) |
| 191 { | 189 { |
| 192 m_layer->layer()->setHasWillChangeTransformHint(hasWillChangeTransform); | 190 m_layer->layer()->setHasWillChangeTransformHint(hasWillChangeTransform); |
| 193 } | 191 } |
| 194 | 192 |
| 195 void GraphicsLayer::setDrawDebugRedFillForTesting(bool enabled) | |
| 196 { | |
| 197 s_drawDebugRedFill = enabled; | |
| 198 } | |
| 199 | |
| 200 void GraphicsLayer::setParent(GraphicsLayer* layer) | 193 void GraphicsLayer::setParent(GraphicsLayer* layer) |
| 201 { | 194 { |
| 202 ASSERT(!layer || !layer->hasAncestor(this)); | 195 ASSERT(!layer || !layer->hasAncestor(this)); |
| 203 m_parent = layer; | 196 m_parent = layer; |
| 204 } | 197 } |
| 205 | 198 |
| 206 #if ENABLE(ASSERT) | 199 #if ENABLE(ASSERT) |
| 207 | 200 |
| 208 bool GraphicsLayer::hasAncestor(GraphicsLayer* ancestor) const | 201 bool GraphicsLayer::hasAncestor(GraphicsLayer* ancestor) const |
| 209 { | 202 { |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 374 | 367 |
| 375 if (!getPaintController().subsequenceCachingIsDisabled() | 368 if (!getPaintController().subsequenceCachingIsDisabled() |
| 376 && !m_client->needsRepaint(*this) | 369 && !m_client->needsRepaint(*this) |
| 377 && !getPaintController().cacheIsEmpty() | 370 && !getPaintController().cacheIsEmpty() |
| 378 && m_previousInterestRect == *interestRect) { | 371 && m_previousInterestRect == *interestRect) { |
| 379 return false; | 372 return false; |
| 380 } | 373 } |
| 381 | 374 |
| 382 GraphicsContext context(getPaintController(), disabledMode); | 375 GraphicsContext context(getPaintController(), disabledMode); |
| 383 | 376 |
| 384 #ifndef NDEBUG | |
| 385 if (contentsOpaque() && s_drawDebugRedFill) { | |
| 386 FloatRect rect(FloatPoint(), size()); | |
| 387 if (!DrawingRecorder::useCachedDrawingIfPossible(context, *this, Display
Item::DebugRedFill)) { | |
| 388 DrawingRecorder recorder(context, *this, DisplayItem::DebugRedFill,
rect); | |
| 389 context.fillRect(rect, SK_ColorRED); | |
| 390 } | |
| 391 } | |
| 392 #endif | |
| 393 | |
| 394 m_previousInterestRect = *interestRect; | 377 m_previousInterestRect = *interestRect; |
| 395 m_client->paintContents(this, context, m_paintingPhase, *interestRect); | 378 m_client->paintContents(this, context, m_paintingPhase, *interestRect); |
| 396 notifyFirstPaintToClient(); | 379 notifyFirstPaintToClient(); |
| 397 return true; | 380 return true; |
| 398 } | 381 } |
| 399 | 382 |
| 400 void GraphicsLayer::notifyFirstPaintToClient() | 383 void GraphicsLayer::notifyFirstPaintToClient() |
| 401 { | 384 { |
| 402 if (!m_painted) { | 385 if (!m_painted) { |
| 403 DisplayItemList& itemList = m_paintController->newDisplayItemList(); | 386 DisplayItemList& itemList = m_paintController->newDisplayItemList(); |
| 404 for (DisplayItem& item : itemList) { | 387 for (DisplayItem& item : itemList) { |
| 405 DisplayItem::Type type = item.getType(); | 388 DisplayItem::Type type = item.getType(); |
| 406 if (DisplayItem::isDrawingType(type) && type != DisplayItem::Documen
tBackground && type != DisplayItem::DebugRedFill && static_cast<const DrawingDis
playItem&>(item).picture()) { | 389 if (DisplayItem::isDrawingType(type) && type != DisplayItem::Documen
tBackground && static_cast<const DrawingDisplayItem&>(item).picture()) { |
| 407 m_painted = true; | 390 m_painted = true; |
| 408 m_client->notifyFirstPaint(); | 391 m_client->notifyFirstPaint(); |
| 409 break; | 392 break; |
| 410 } | 393 } |
| 411 } | 394 } |
| 412 } | 395 } |
| 413 if (!m_textPainted && m_paintController->textPainted()) { | 396 if (!m_textPainted && m_paintController->textPainted()) { |
| 414 m_textPainted = true; | 397 m_textPainted = true; |
| 415 m_client->notifyFirstTextPaint(); | 398 m_client->notifyFirstTextPaint(); |
| 416 } | 399 } |
| (...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 939 if (clampedSize.width() < 0 || clampedSize.height() < 0) | 922 if (clampedSize.width() < 0 || clampedSize.height() < 0) |
| 940 clampedSize = FloatSize(); | 923 clampedSize = FloatSize(); |
| 941 | 924 |
| 942 if (clampedSize == m_size) | 925 if (clampedSize == m_size) |
| 943 return; | 926 return; |
| 944 | 927 |
| 945 m_size = clampedSize; | 928 m_size = clampedSize; |
| 946 | 929 |
| 947 m_layer->layer()->setBounds(flooredIntSize(m_size)); | 930 m_layer->layer()->setBounds(flooredIntSize(m_size)); |
| 948 // Note that we don't resize m_contentsLayer. It's up the caller to do that. | 931 // Note that we don't resize m_contentsLayer. It's up the caller to do that. |
| 949 | |
| 950 #ifndef NDEBUG | |
| 951 // The red debug fill and needs to be invalidated if the layer resizes. | |
| 952 setDisplayItemsUncached(); | |
| 953 #endif | |
| 954 } | 932 } |
| 955 | 933 |
| 956 void GraphicsLayer::setTransform(const TransformationMatrix& transform) | 934 void GraphicsLayer::setTransform(const TransformationMatrix& transform) |
| 957 { | 935 { |
| 958 m_transform = transform; | 936 m_transform = transform; |
| 959 platformLayer()->setTransform(TransformationMatrix::toSkMatrix44(m_transform
)); | 937 platformLayer()->setTransform(TransformationMatrix::toSkMatrix44(m_transform
)); |
| 960 } | 938 } |
| 961 | 939 |
| 962 void GraphicsLayer::setTransformOrigin(const FloatPoint3D& transformOrigin) | 940 void GraphicsLayer::setTransformOrigin(const FloatPoint3D& transformOrigin) |
| 963 { | 941 { |
| (...skipping 416 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1380 { | 1358 { |
| 1381 if (!layer) { | 1359 if (!layer) { |
| 1382 fprintf(stderr, "Cannot showGraphicsLayerTree for (nil).\n"); | 1360 fprintf(stderr, "Cannot showGraphicsLayerTree for (nil).\n"); |
| 1383 return; | 1361 return; |
| 1384 } | 1362 } |
| 1385 | 1363 |
| 1386 String output = layer->layerTreeAsText(blink::LayerTreeIncludesDebugInfo); | 1364 String output = layer->layerTreeAsText(blink::LayerTreeIncludesDebugInfo); |
| 1387 fprintf(stderr, "%s\n", output.utf8().data()); | 1365 fprintf(stderr, "%s\n", output.utf8().data()); |
| 1388 } | 1366 } |
| 1389 #endif | 1367 #endif |
| OLD | NEW |