| Index: third_party/WebKit/Source/core/frame/FrameView.cpp
|
| diff --git a/third_party/WebKit/Source/core/frame/FrameView.cpp b/third_party/WebKit/Source/core/frame/FrameView.cpp
|
| index f94c98e4a4d0d191a3bc6a8fe84aaa561a7a9e1b..a6304a708559976dd77b0674c4d684c51db6b62f 100644
|
| --- a/third_party/WebKit/Source/core/frame/FrameView.cpp
|
| +++ b/third_party/WebKit/Source/core/frame/FrameView.cpp
|
| @@ -3727,16 +3727,11 @@ void FrameView::paint(GraphicsContext& context, const CullRect& cullRect) const
|
|
|
| void FrameView::paint(GraphicsContext& context, const GlobalPaintFlags globalPaintFlags, const CullRect& cullRect) const
|
| {
|
| - // TODO(skyostil): Remove this early-out in favor of painting cached scrollbars.
|
| - if (shouldThrottleRendering())
|
| - return;
|
| FramePainter(*this).paint(context, globalPaintFlags, cullRect);
|
| }
|
|
|
| void FrameView::paintContents(GraphicsContext& context, const GlobalPaintFlags globalPaintFlags, const IntRect& damageRect) const
|
| {
|
| - if (shouldThrottleRendering())
|
| - return;
|
| FramePainter(*this).paintContents(context, globalPaintFlags, damageRect);
|
| }
|
|
|
| @@ -4032,8 +4027,15 @@ void FrameView::notifyRenderThrottlingObservers()
|
| }
|
|
|
| bool becameUnthrottled = wasThrottled && !canThrottleRendering();
|
| - if (becameUnthrottled)
|
| + if (becameUnthrottled) {
|
| + // Start ticking animation frames again if necessary.
|
| page()->animator().scheduleVisualUpdate(m_frame.get());
|
| + // Force a full repaint of this frame to ensure we are not left with a
|
| + // partially painted version of this frame's contents if we skipped
|
| + // painting them while the frame was throttled.
|
| + if (LayoutView* layoutView = this->layoutView())
|
| + layoutView->setShouldDoFullPaintInvalidation(PaintInvalidationBecameVisible);
|
| + }
|
| }
|
|
|
| bool FrameView::shouldThrottleRendering() const
|
|
|