Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(21)

Issue 2038243002: Prevent synchronous image change notifications during paint (Closed)

Created:
4 years, 6 months ago by pdr.
Modified:
4 years, 6 months ago
Reviewers:
chrishtr, Xianzhu
CC:
ajuma+watch_chromium.org, blink-reviews, blink-reviews-layout_chromium.org, blink-reviews-platform-graphics_chromium.org, Rik, chromium-reviews, danakj+watch_chromium.org, dshwang, drott+blinkwatch_chromium.org, krit, eae+blinkwatch, f(malita), jbroman, jchaffraix+rendering, Justin Novosad, leviw+renderwatch, pdr+graphicswatchlist_chromium.org, pdr+renderingwatchlist_chromium.org, rwlbuis, Stephen Chennney, szager+layoutwatch_chromium.org, zoltan1
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Prevent synchronous image change notifications during paint Image changed notifications are used by animated images to notify LayoutObject clients that they need to repaint. These notifications typically result in paint invalidations. Animated bitmap images have some logic[1] to handle "falling behind" which would synchronously fire image changed notifications during paint. This results in missed paint invalidations as well as a changing layout tree out from under the paint system. This patch moves the synchronous image change notifications to an immediate task which occurs after paint has completed. [1] When painting animated gifs on a heavily loaded system (or a debug build), pauses in the system can cause the animation to get behind. When this happens, we want to advance the animation and catch-up but prevent the next frame from using the same catch-up logic which could get us in an infinite catch-up loop. BUG=616700 Committed: https://crrev.com/45eef1a2a0f721e6782c4c92b28de3835f94ec46 Cr-Commit-Position: refs/heads/master@{#398147}

Patch Set 1 #

Patch Set 2 : Great Expectations #

Total comments: 2
Unified diffs Side-by-side diffs Delta from patch set Stats (+21 lines, -23 lines) Patch
M third_party/WebKit/LayoutTests/TestExpectations View 1 1 chunk +0 lines, -3 lines 0 comments Download
M third_party/WebKit/Source/core/layout/LayoutObject.cpp View 1 chunk +6 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/platform/graphics/BitmapImage.h View 1 chunk +6 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/platform/graphics/BitmapImage.cpp View 2 chunks +9 lines, -20 lines 2 comments Download

Messages

Total messages: 21 (7 generated)
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/2038243002/1
4 years, 6 months ago (2016-06-04 00:34:23 UTC) #2
commit-bot: I haz the power
Dry run: This issue passed the CQ dry run.
4 years, 6 months ago (2016-06-04 02:12:34 UTC) #4
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/2038243002/20001
4 years, 6 months ago (2016-06-04 02:23:47 UTC) #6
pdr.
4 years, 6 months ago (2016-06-04 02:24:57 UTC) #8
commit-bot: I haz the power
Dry run: This issue passed the CQ dry run.
4 years, 6 months ago (2016-06-04 03:59:58 UTC) #10
chrishtr
https://codereview.chromium.org/2038243002/diff/20001/third_party/WebKit/Source/platform/graphics/BitmapImage.cpp File third_party/WebKit/Source/platform/graphics/BitmapImage.cpp (right): https://codereview.chromium.org/2038243002/diff/20001/third_party/WebKit/Source/platform/graphics/BitmapImage.cpp#newcode506 third_party/WebKit/Source/platform/graphics/BitmapImage.cpp:506: m_frameTimer = adoptPtr(new Timer<BitmapImage>(this, &BitmapImage::advanceAnimationWithoutCatchUp)); It seems it might ...
4 years, 6 months ago (2016-06-04 06:39:49 UTC) #11
pdr.
https://codereview.chromium.org/2038243002/diff/20001/third_party/WebKit/Source/platform/graphics/BitmapImage.cpp File third_party/WebKit/Source/platform/graphics/BitmapImage.cpp (right): https://codereview.chromium.org/2038243002/diff/20001/third_party/WebKit/Source/platform/graphics/BitmapImage.cpp#newcode506 third_party/WebKit/Source/platform/graphics/BitmapImage.cpp:506: m_frameTimer = adoptPtr(new Timer<BitmapImage>(this, &BitmapImage::advanceAnimationWithoutCatchUp)); On 2016/06/04 at 06:39:49, ...
4 years, 6 months ago (2016-06-04 15:05:34 UTC) #12
chrishtr
lgtm
4 years, 6 months ago (2016-06-06 15:41:48 UTC) #13
chrishtr
Actually, what about a test? You did find pages that tend to trigger this right?
4 years, 6 months ago (2016-06-06 15:42:18 UTC) #14
pdr.
On 2016/06/06 at 15:42:18, chrishtr wrote: > Actually, what about a test? You did find ...
4 years, 6 months ago (2016-06-06 17:22:56 UTC) #15
chrishtr
lgtm
4 years, 6 months ago (2016-06-06 17:25:06 UTC) #16
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/2038243002/20001
4 years, 6 months ago (2016-06-06 17:27:30 UTC) #18
commit-bot: I haz the power
Committed patchset #2 (id:20001)
4 years, 6 months ago (2016-06-06 22:33:45 UTC) #19
commit-bot: I haz the power
4 years, 6 months ago (2016-06-06 22:36:17 UTC) #21
Message was sent while issue was closed.
Patchset 2 (id:??) landed as
https://crrev.com/45eef1a2a0f721e6782c4c92b28de3835f94ec46
Cr-Commit-Position: refs/heads/master@{#398147}

Powered by Google App Engine
This is Rietveld 408576698