OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "core/paint/ObjectPaintInvalidator.h" | 5 #include "core/paint/ObjectPaintInvalidator.h" |
6 | 6 |
7 #include "core/frame/FrameView.h" | 7 #include "core/frame/FrameView.h" |
8 #include "core/frame/LocalFrame.h" | 8 #include "core/frame/LocalFrame.h" |
9 #include "core/layout/LayoutView.h" | 9 #include "core/layout/LayoutView.h" |
10 #include "core/layout/api/LayoutPartItem.h" | 10 #include "core/layout/api/LayoutPartItem.h" |
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
375 JsonObjectForPaintInvalidationInfo( | 375 JsonObjectForPaintInvalidationInfo( |
376 dirty_rect, PaintInvalidationReasonToString(invalidation_reason))); | 376 dirty_rect, PaintInvalidationReasonToString(invalidation_reason))); |
377 | 377 |
378 // This conditional handles situations where non-rooted (and hence | 378 // This conditional handles situations where non-rooted (and hence |
379 // non-composited) frames are painted, such as SVG images. | 379 // non-composited) frames are painted, such as SVG images. |
380 if (!paint_invalidation_container.IsPaintInvalidationContainer()) { | 380 if (!paint_invalidation_container.IsPaintInvalidationContainer()) { |
381 InvalidatePaintRectangleOnWindow(paint_invalidation_container, | 381 InvalidatePaintRectangleOnWindow(paint_invalidation_container, |
382 EnclosingIntRect(dirty_rect)); | 382 EnclosingIntRect(dirty_rect)); |
383 } | 383 } |
384 | 384 |
385 if (paint_invalidation_container.View()->UsesCompositing() && | 385 auto* view = paint_invalidation_container.View(); |
386 paint_invalidation_container.IsPaintInvalidationContainer()) { | 386 if (view && view->UsesCompositing()) { |
387 SetBackingNeedsPaintInvalidationInRect(paint_invalidation_container, | 387 if (paint_invalidation_container.IsPaintInvalidationContainer()) { |
388 dirty_rect, invalidation_reason); | 388 SetBackingNeedsPaintInvalidationInRect(paint_invalidation_container, |
| 389 dirty_rect, invalidation_reason); |
| 390 } |
389 } | 391 } |
390 } | 392 } |
391 | 393 |
392 LayoutRect ObjectPaintInvalidator::InvalidatePaintRectangle( | 394 LayoutRect ObjectPaintInvalidator::InvalidatePaintRectangle( |
393 const LayoutRect& dirty_rect, | 395 const LayoutRect& dirty_rect, |
394 DisplayItemClient* display_item_client) { | 396 DisplayItemClient* display_item_client) { |
395 CHECK(object_.IsRooted()); | 397 CHECK(object_.IsRooted()); |
396 | 398 |
397 if (dirty_rect.IsEmpty()) | 399 if (dirty_rect.IsEmpty()) |
398 return LayoutRect(); | 400 return LayoutRect(); |
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
664 | 666 |
665 context_.painting_layer->SetNeedsRepaint(); | 667 context_.painting_layer->SetNeedsRepaint(); |
666 object_.InvalidateDisplayItemClients(reason); | 668 object_.InvalidateDisplayItemClients(reason); |
667 return reason; | 669 return reason; |
668 } | 670 } |
669 | 671 |
670 DisablePaintInvalidationStateAsserts::DisablePaintInvalidationStateAsserts() | 672 DisablePaintInvalidationStateAsserts::DisablePaintInvalidationStateAsserts() |
671 : disabler_(&g_disable_paint_invalidation_state_asserts, true) {} | 673 : disabler_(&g_disable_paint_invalidation_state_asserts, true) {} |
672 | 674 |
673 } // namespace blink | 675 } // namespace blink |
OLD | NEW |