Closed Bug 803461 Opened 12 years ago Closed 12 years ago

[Unagi] lock screen handle is very unresponsive

Categories

(Firefox OS Graveyard :: Gaia::System::Lockscreen, defect)

ARM
Gonk (Firefox OS)
defect
Not set
normal

Tracking

(blocking-basecamp:-)

RESOLVED INVALID
blocking-basecamp -

People

(Reporter: ttaubert, Unassigned)

References

Details

(Keywords: perf)

Dragging the handle to unlock the screen is very unresponsive and I think we should do something about that. That's a very common action and makes the device feel really sluggish.
First, I think we should reduce the offsetWidth usage in LockScreen.handleMove(). We don't really need to query offsetWidth all the time when dragging because the handle and overlay size doesn't change.

https://github.com/ttaubert/gaia/commit/342aabd07b5eaef65acba543e59179da7fb7566a
Second, I noticed that the performance gets remarkably better (still room for improvement, though) when the 'handlegrow' animation that animates the glowing ring around the handle is disabled.

https://github.com/ttaubert/gaia/commit/ced19e695eae30e5f867bc68bf3a0594c486b9b9

Disabling doesn't seem like a viable solution but I just wanted to note that this little animation obviously adds a lot of jank.
Third, I think we should not modify the rail widths but rather scale them using transforms. I don't know much about the internals but I suspect this to be faster because transforms can not cause reflows? I didn't see a big speedup but it should be a little faster?

https://github.com/ttaubert/gaia/commit/73799e892eb95c0171f19c95ec2cd93ebaed701d
(In reply to Tim Taubert [:ttaubert] from comment #2)
> Second, I noticed that the performance gets remarkably better (still room
> for improvement, though) when the 'handlegrow' animation that animates the
> glowing ring around the handle is disabled.

The rails' opacity transitions seem equally expensive. With both of these animations removed the handle is a lot more responsive and smooth.
Ok, I'm out of ideas for now. Is disabling the handlegrow animation and the rails' opacity transitions an option? If our target is lower-end devices it feels kind of silly to sacrifice performance for subtle effects like this. Creator of these effects, please don't feel offended :)
blocking-basecamp: ? → -
Seems like most of this has already been addressed in bug 803945?
Depends on: 803945
Over the weekend I did a canvas implementation

http://people.mozilla.com/~cjones/lockscreen/

It's 300 lines of JS, simpler IMHO, more responsive, has solid 60fps perf, uses less CPU %, and looks better on 16bpp screens.  I hear there's a UX change coming down the pipe so I'll try to update that impl for the new UX and get it in.
Component: Gaia → Gaia::System
Component: Gaia::System → Gaia::System::Lockscreen
Given the fact that the design have been changed, this bug should be closed.

CCing Yuren who is doing the current implementation. Thanks for exploring!
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → INVALID
You need to log in before you can comment on or make changes to this bug.