OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "platform/graphics/paint/PaintController.h" | 5 #include "platform/graphics/paint/PaintController.h" |
6 | 6 |
7 #include "platform/TraceEvent.h" | 7 #include "platform/TraceEvent.h" |
8 #include "platform/graphics/GraphicsLayer.h" | 8 #include "platform/graphics/GraphicsLayer.h" |
9 #include "platform/graphics/paint/DrawingDisplayItem.h" | 9 #include "platform/graphics/paint/DrawingDisplayItem.h" |
10 #include "third_party/skia/include/core/SkPictureAnalyzer.h" | 10 #include "third_party/skia/include/core/SkPictureAnalyzer.h" |
(...skipping 653 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
664 | 664 |
665 // Discard the forced repainted display item and move the cached item into m
_newDisplayItemList. | 665 // Discard the forced repainted display item and move the cached item into m
_newDisplayItemList. |
666 // This is to align with the non-under-invalidation-checking path to empty t
he original cached slot, | 666 // This is to align with the non-under-invalidation-checking path to empty t
he original cached slot, |
667 // leaving only disappeared or invalidated display items in the old list aft
er painting. | 667 // leaving only disappeared or invalidated display items in the old list aft
er painting. |
668 m_newDisplayItemList.removeLast(); | 668 m_newDisplayItemList.removeLast(); |
669 m_newDisplayItemList.appendByMoving(*oldItem); | 669 m_newDisplayItemList.appendByMoving(*oldItem); |
670 | 670 |
671 ++m_underInvalidationCheckingBegin; | 671 ++m_underInvalidationCheckingBegin; |
672 } | 672 } |
673 | 673 |
674 String PaintController::displayItemListAsDebugString(const DisplayItemList& list
) const | 674 String PaintController::displayItemListAsDebugString(const DisplayItemList& list
, bool showPictures) const |
675 { | 675 { |
676 StringBuilder stringBuilder; | 676 StringBuilder stringBuilder; |
677 size_t i = 0; | 677 size_t i = 0; |
678 for (auto it = list.begin(); it != list.end(); ++it, ++i) { | 678 for (auto it = list.begin(); it != list.end(); ++it, ++i) { |
679 const DisplayItem& displayItem = *it; | 679 const DisplayItem& displayItem = *it; |
680 if (i) | 680 if (i) |
681 stringBuilder.append(",\n"); | 681 stringBuilder.append(",\n"); |
682 stringBuilder.append(String::format("{index: %d, ", (int)i)); | 682 stringBuilder.append(String::format("{index: %d, ", (int)i)); |
683 #ifndef NDEBUG | 683 #ifndef NDEBUG |
684 displayItem.dumpPropertiesAsDebugString(stringBuilder); | 684 displayItem.dumpPropertiesAsDebugString(stringBuilder); |
685 #else | 685 #else |
686 stringBuilder.append(String::format("clientDebugName: %s", displayItem.c
lient().debugName().ascii().data())); | 686 stringBuilder.append(String::format("clientDebugName: %s", displayItem.c
lient().debugName().ascii().data())); |
687 #endif | 687 #endif |
688 if (displayItem.hasValidClient()) { | 688 if (displayItem.hasValidClient()) { |
689 do { | 689 do { |
690 #if CHECK_DISPLAY_ITEM_CLIENT_ALIVENESS | 690 #if CHECK_DISPLAY_ITEM_CLIENT_ALIVENESS |
691 if (!displayItem.client().isAlive()) { | 691 if (!displayItem.client().isAlive()) { |
692 stringBuilder.append(", clientIsAlive: false"); | 692 stringBuilder.append(", clientIsAlive: false"); |
693 break; | 693 break; |
694 } | 694 } |
695 #endif | 695 #endif |
696 stringBuilder.append(", cacheIsValid: "); | 696 stringBuilder.append(", cacheIsValid: "); |
697 stringBuilder.append(clientCacheIsValid(displayItem.client()) ?
"true" : "false"); | 697 stringBuilder.append(clientCacheIsValid(displayItem.client()) ?
"true" : "false"); |
698 } while (false); | 698 } while (false); |
| 699 #ifndef NDEBUG |
| 700 if (showPictures && displayItem.isDrawing()) { |
| 701 if (const SkPicture* picture = static_cast<const DrawingDisplayI
tem&>(displayItem).picture()) { |
| 702 stringBuilder.append(", picture: "); |
| 703 stringBuilder.append(pictureAsDebugString(picture)); |
| 704 } |
| 705 } |
| 706 #endif |
699 } | 707 } |
700 if (list.hasVisualRect(i)) { | 708 if (list.hasVisualRect(i)) { |
701 IntRect visualRect = list.visualRect(i); | 709 IntRect visualRect = list.visualRect(i); |
702 stringBuilder.append(String::format(", visualRect: [%d,%d %dx%d]", | 710 stringBuilder.append(String::format(", visualRect: [%d,%d %dx%d]", |
703 visualRect.x(), visualRect.y(), | 711 visualRect.x(), visualRect.y(), |
704 visualRect.width(), visualRect.height())); | 712 visualRect.width(), visualRect.height())); |
705 } | 713 } |
706 stringBuilder.append('}'); | 714 stringBuilder.append('}'); |
707 } | 715 } |
708 return stringBuilder.toString(); | 716 return stringBuilder.toString(); |
709 } | 717 } |
710 | 718 |
711 void PaintController::showDebugData() const | 719 void PaintController::showDebugDataInternal(bool showPictures) const |
712 { | 720 { |
713 WTFLogAlways("current display item list: [%s]\n", displayItemListAsDebugStri
ng(m_currentPaintArtifact.getDisplayItemList()).utf8().data()); | 721 WTFLogAlways("current display item list: [%s]\n", displayItemListAsDebugStri
ng(m_currentPaintArtifact.getDisplayItemList(), showPictures).utf8().data()); |
714 WTFLogAlways("new display item list: [%s]\n", displayItemListAsDebugString(m
_newDisplayItemList).utf8().data()); | 722 WTFLogAlways("new display item list: [%s]\n", displayItemListAsDebugString(m
_newDisplayItemList, showPictures).utf8().data()); |
715 } | 723 } |
716 | 724 |
717 } // namespace blink | 725 } // namespace blink |
OLD | NEW |