Chromium Code Reviews| Index: Source/core/paint/DeprecatedPaintLayerPainter.cpp |
| diff --git a/Source/core/paint/DeprecatedPaintLayerPainter.cpp b/Source/core/paint/DeprecatedPaintLayerPainter.cpp |
| index b377cdfe02ee91c70e0e96d8affed000d1cd5b5d..79cbbf85516fa2c6e9bec8d1536b4fa7295e7dff 100644 |
| --- a/Source/core/paint/DeprecatedPaintLayerPainter.cpp |
| +++ b/Source/core/paint/DeprecatedPaintLayerPainter.cpp |
| @@ -8,6 +8,7 @@ |
| #include "core/frame/Settings.h" |
| #include "core/layout/ClipPathOperation.h" |
| #include "core/layout/LayoutBlock.h" |
| +#include "core/layout/LayoutFrame.h" |
| #include "core/layout/LayoutView.h" |
| #include "core/layout/svg/LayoutSVGResourceClipper.h" |
| #include "core/page/Page.h" |
| @@ -43,6 +44,17 @@ static inline bool shouldSuppressPaintingLayer(DeprecatedPaintLayer* layer) |
| return false; |
| } |
| +static bool isThrottledFrameView(const LayoutObject* layoutObject) |
| +{ |
| + if (!layoutObject->isFrame()) |
| + return false; |
| + const LayoutFrame* frame = toLayoutFrame(layoutObject); |
| + if (!frame->widget()->isFrameView()) |
| + return false; |
| + const FrameView* frameView = toFrameView(frame->widget()); |
| + return frameView->shouldThrottleRenderingPipeline(); |
| +} |
| + |
| void DeprecatedPaintLayerPainter::paint(GraphicsContext* context, const LayoutRect& damageRect, const GlobalPaintFlags globalPaintFlags, LayoutObject* paintingRoot, PaintLayerFlags paintFlags) |
| { |
| DeprecatedPaintLayerPaintingInfo paintingInfo(&m_paintLayer, LayoutRect(enclosingIntRect(damageRect)), globalPaintFlags, LayoutSize(), paintingRoot); |
| @@ -80,6 +92,9 @@ void DeprecatedPaintLayerPainter::paintLayer(GraphicsContext* context, const Dep |
| if (shouldSuppressPaintingLayer(&m_paintLayer)) |
| return; |
| + if (isThrottledFrameView(m_paintLayer.layoutObject())) |
|
chrishtr
2015/09/04 17:32:04
Add TODO here and below about subsequence caching.
Sami
2015/09/07 17:27:17
Done.
|
| + return; |
| + |
| // If this layer is totally invisible then there is nothing to paint. |
| if (!m_paintLayer.layoutObject()->opacity() && !m_paintLayer.layoutObject()->hasBackdropFilter()) |
| return; |
| @@ -203,6 +218,9 @@ void DeprecatedPaintLayerPainter::paintLayerContents(GraphicsContext* context, c |
| if (paintFlags & PaintLayerPaintingRootBackgroundOnly && !m_paintLayer.layoutObject()->isLayoutView() && !m_paintLayer.layoutObject()->isDocumentElement()) |
| return; |
| + if (isThrottledFrameView(m_paintLayer.layoutObject())) |
| + return; |
| + |
| // Ensure our lists are up-to-date. |
| m_paintLayer.stackingNode()->updateLayerListsIfNeeded(); |