New issue
Advanced search Search tips

Issue 820436 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Mar 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug



Sign in to add a comment

Visual "pop" from wallpaper blur at lock screen on lid open

Project Member Reported by jamescook@chromium.org, Mar 9 2018

Issue description

Google Chrome	67.0.3363.0 (Official Build) canary (64-bit)
Revision	0
Platform	10464.0.0 (Official Build) canary-channel samus

* Set wallpaper to something high contrast or with sharp lines (e.g. the default link wallpaper)
* Set device to lock screen on suspend (or use a corp Chromebook)
* Close lid and wait for device to suspend
* Open lid, watch the screen closely

On lid open the wallpaper is not blurred. 100 to 200 ms later the blur effect applies. The causes a visual "pop" that is distracting, especially if the display is in your peripheral vision. It looks janky and unpolished.

I would expect the wallpaper to be blurred when the lock screen first paints.

Repro tip: Instead of putting the device flat on a table, tilt it up vertically on the hinge. Open the lid by rotating the keyboard down flat on the table. This lets you see the screen better as the keyboard goes down.

| |          |       
| |    =>    |       
| |          |      
 o           o-----

Dunno if this is wallpaper or lock screen, CC-ing a few people

 
my-wallpaper.png
6.6 MB View Download
Description: Show this description

Comment 2 by wzang@chromium.org, Mar 9 2018

Cc: tbarzic@chromium.org
+tbarzic, is it the same with the issue you worked on? I believe this is related to power_event_observer?
Owner: tbarzic@chromium.org
Status: Started (was: Untriaged)
I've had a cl in plan that should address this.
Project Member

Comment 4 by bugdroid1@chromium.org, Mar 13 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c7dbb870ac431aa1767e2e0c9a68106502f0571e

commit c7dbb870ac431aa1767e2e0c9a68106502f0571e
Author: Toni Barzic <tbarzic@chromium.org>
Date: Tue Mar 13 23:08:10 2018

Wait for animated wallpaper changes to finish before suspending displays

PowerEventObserver delays display suspend until lock screen UI is shown
and compositors submit enough frames to know the UI changes have reached
displays.
This does not account for wallpaper changes due to screen lock:
  * On screen lock, the active wallpaper will be changed with its blurred
    version.
  * If screen lock changes the active user (e.g. if the screen is locked
    from the secondary user), the wallpaper will change to the new
    active user's blurred wallpaper.
Given that PowerEventObserver does not ensure wallpaper switch is done
before it stops drawing to the display, the first frame shown on the
device resume might still contain the UI from before wallpaper change.

This changes PowerEventObserver to additionally wait for any active
wallpaper changes (which can be detected by checking
WallpaperWidgetController::IsAnimating - set while wallpaper widget is
being changed) to finish before it starts waiting for compositor frames
to get composited, thus ensuring the correct wallpaper is set when the
display/compositing is suspended.

Adds the following methods to WallpaperWidgetController:
  * AddPendingAnimationEndCallback - to provide a way for
    PowerEventObserver to get notified when the pending wallpaper change
    completes
  * EndPendingAnimation which can be used to force immediate wallpaper
    change when device starts suspending (and prevents suspend flow from
    being blocked on unnecessarily waiting for new wallpaper animation)

BUG= 820436 , 803762 

Change-Id: Iad2074280ebba740b95c50b9d60a028bf5a0d45c
Reviewed-on: https://chromium-review.googlesource.com/956757
Reviewed-by: Dan Erat <derat@chromium.org>
Reviewed-by: Wenzhao (Colin) Zang <wzang@chromium.org>
Commit-Queue: Toni Barzic <tbarzic@chromium.org>
Cr-Commit-Position: refs/heads/master@{#542945}
[modify] https://crrev.com/c7dbb870ac431aa1767e2e0c9a68106502f0571e/ash/system/power/power_event_observer.cc
[modify] https://crrev.com/c7dbb870ac431aa1767e2e0c9a68106502f0571e/ash/system/power/power_event_observer.h
[modify] https://crrev.com/c7dbb870ac431aa1767e2e0c9a68106502f0571e/ash/system/power/power_event_observer_unittest.cc
[modify] https://crrev.com/c7dbb870ac431aa1767e2e0c9a68106502f0571e/ash/wallpaper/wallpaper_widget_controller.cc
[modify] https://crrev.com/c7dbb870ac431aa1767e2e0c9a68106502f0571e/ash/wallpaper/wallpaper_widget_controller.h

Project Member

Comment 5 by bugdroid1@chromium.org, Mar 23 2018

Labels: merge-merged-3359
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/524c3741778d2b9e77645de1605711efa68896b2

commit 524c3741778d2b9e77645de1605711efa68896b2
Author: Toni Barzic <tbarzic@chromium.org>
Date: Fri Mar 23 21:02:32 2018

Merge: Wait for animated wallpaper changes to finish before suspending displays

PowerEventObserver delays display suspend until lock screen UI is shown
and compositors submit enough frames to know the UI changes have reached
displays.
This does not account for wallpaper changes due to screen lock:
  * On screen lock, the active wallpaper will be changed with its blurred
    version.
  * If screen lock changes the active user (e.g. if the screen is locked
    from the secondary user), the wallpaper will change to the new
    active user's blurred wallpaper.
Given that PowerEventObserver does not ensure wallpaper switch is done
before it stops drawing to the display, the first frame shown on the
device resume might still contain the UI from before wallpaper change.

This changes PowerEventObserver to additionally wait for any active
wallpaper changes (which can be detected by checking
WallpaperWidgetController::IsAnimating - set while wallpaper widget is
being changed) to finish before it starts waiting for compositor frames
to get composited, thus ensuring the correct wallpaper is set when the
display/compositing is suspended.

Adds the following methods to WallpaperWidgetController:
  * AddPendingAnimationEndCallback - to provide a way for
    PowerEventObserver to get notified when the pending wallpaper change
    completes
  * EndPendingAnimation which can be used to force immediate wallpaper
    change when device starts suspending (and prevents suspend flow from
    being blocked on unnecessarily waiting for new wallpaper animation)

BUG= 820436 , 803762 
TBR=tbarzic@chromium.org

(cherry picked from commit c7dbb870ac431aa1767e2e0c9a68106502f0571e)

Change-Id: Iad2074280ebba740b95c50b9d60a028bf5a0d45c
Reviewed-on: https://chromium-review.googlesource.com/956757
Reviewed-by: Dan Erat <derat@chromium.org>
Reviewed-by: Wenzhao (Colin) Zang <wzang@chromium.org>
Commit-Queue: Toni Barzic <tbarzic@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#542945}
Reviewed-on: https://chromium-review.googlesource.com/978842
Reviewed-by: Toni Barzic <tbarzic@chromium.org>
Cr-Commit-Position: refs/branch-heads/3359@{#408}
Cr-Branched-From: 66afc5e5d10127546cc4b98b9117aff588b5e66b-refs/heads/master@{#540276}
[modify] https://crrev.com/524c3741778d2b9e77645de1605711efa68896b2/ash/system/power/power_event_observer.cc
[modify] https://crrev.com/524c3741778d2b9e77645de1605711efa68896b2/ash/system/power/power_event_observer.h
[modify] https://crrev.com/524c3741778d2b9e77645de1605711efa68896b2/ash/system/power/power_event_observer_unittest.cc
[modify] https://crrev.com/524c3741778d2b9e77645de1605711efa68896b2/ash/wallpaper/wallpaper_widget_controller.cc
[modify] https://crrev.com/524c3741778d2b9e77645de1605711efa68896b2/ash/wallpaper/wallpaper_widget_controller.h

Status: Fixed (was: Started)

Sign in to add a comment