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

Issue 2567253002: arc: Avoid the resize operation in GetImageForScale() whenever possible (Closed)

Created:
4 years ago by Yusuke Sato
Modified:
4 years ago
Reviewers:
xiyuan, khmel
CC:
chromium-reviews, elijahtaylor+arcwatch_chromium.org, yusukes+watch_chromium.org, tfarina, hidehiko+watch_chromium.org, lhchavez+watch_chromium.org, Matt Giuca
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

arc: Avoid the resize operation in GetImageForScale() whenever possible to remove UI jank. ArcAppIcon::Source::GetImageForScale() is one of the lowest level functions for the ARC app icon stuff which can easily be called thousands of times while e.g. the user enters a few characters to the app search box. However, the function does a relatively heavy Skia operation, gfx::ImageSkiaOperations::CreateResizedImage() with RESIZE_BEST, against either IDR_APP_DEFAULT_ICON or IDR_ARC_SUPPORT_ICON_NN, and b/33377533 shows that the operation actually slows down Chrome OS UI significantly. For example, on a recent Chromebook, pressing Search, then entering pressing characters to the app search box freezes the browser's UI thread for about (5 * num_of_arc_apps * num_of_key_presses) milliseconds. If you enter 5 characters, and your device has 50 ARC apps, the UI freezes for about 1.25 seconds. This CL removes the bottleneck by avoiding the heavy resize operation when possible. BUG=673571 TEST=Install 50+ ARC apps to make the issue much more apparent, press Search to show the text area for app search, enter a few characters to the area, confirm that the UI is still responsive. TEST=chrome://tracing (input latency mode) does not show any long tasks in the UI thread anymore. Committed: https://crrev.com/e3f59ed9bdc15fc1cccc737e425d40a077c36a32 Cr-Commit-Position: refs/heads/master@{#438238}

Patch Set 1 #

Unified diffs Side-by-side diffs Delta from patch set Stats (+30 lines, -5 lines) Patch
M chrome/browser/ui/app_list/arc/arc_app_icon.cc View 4 chunks +30 lines, -5 lines 0 comments Download

Messages

Total messages: 17 (11 generated)
Yusuke Sato
Please take a look.
4 years ago (2016-12-13 02:35:50 UTC) #8
khmel
lgtm
4 years ago (2016-12-13 15:43:20 UTC) #9
xiyuan
lgtm
4 years ago (2016-12-13 18:31:47 UTC) #10
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2567253002/1
4 years ago (2016-12-13 18:35:41 UTC) #12
commit-bot: I haz the power
Committed patchset #1 (id:1)
4 years ago (2016-12-13 18:41:58 UTC) #15
commit-bot: I haz the power
4 years ago (2016-12-13 18:45:17 UTC) #17
Message was sent while issue was closed.
Patchset 1 (id:??) landed as
https://crrev.com/e3f59ed9bdc15fc1cccc737e425d40a077c36a32
Cr-Commit-Position: refs/heads/master@{#438238}

Powered by Google App Engine
This is Rietveld 408576698