Closed Bug 924788 Opened 11 years ago Closed 11 years ago

Bad homescreen scrolling performance on high screen resolution device

Categories

(Firefox OS Graveyard :: Gaia::Homescreen, defect)

ARM
Gonk (Firefox OS)
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED DUPLICATE of bug 924942
1.2 C3(Oct25)

People

(Reporter: jerry, Unassigned)

Details

(Keywords: perf, Whiteboard: [c= p= s= u=])

Attachments

(1 file)

When we start to scroll the homescreen, first it paints the current and the next page into two full screen size textures.
Then, homescreen app only draws these two static textures until we stop dragging. It prevents parsing css rule and redrawing icons when scrolling.
Thus we can get better performance in dragging mode.

But when we scroll at high resolution device, we spend a large time for the first two screen draw calls.
We will get a little delay when we start scrolling.

Can we always preserve the static textures and show these texture all the time?
We only need to update these static textures if the content of page change.
It will use more memory, but get better performance for user experience.
Cristian please offer your opinion, thanks.
Flags: needinfo?(crdlc)
Hi all,

   How does the current code work? 

   The homescreen defines previous, current and next pages as display block (although translated to -100% and 100% respectively, I mean, out of viewport) [1]. E.g. Imagine what we are on the page 3 then pages 2, 3 and 4 define the display property like block. So when we start scrolling, the pages should be visible BUT a patch about accessibility introduced a new visibility property where previous and next pages are hidden before touchmove event [3].

   So, I have an idea, please disable the changes on grid.css created on this commit[2]. If the performance is better, it could show the path.   

[1] https://github.com/mozilla-b2g/gaia/blob/master/apps/homescreen/js/grid.js#L439
[2] https://github.com/mozilla-b2g/gaia/commit/08ba523403475799861b06166391811226c8a0c8
[3] https://github.com/mozilla-b2g/gaia/blob/master/apps/homescreen/js/grid.js#L225
Flags: needinfo?(crdlc)
(In reply to Cristian Rodriguez (:crdlc) from comment #2) 
>    So, I have an idea, please disable the changes on grid.css created on
> this commit[2]. If the performance is better, it could show the path.   

Hi Cristian, do you means that:

--- a/apps/homescreen/style/grid.css
+++ b/apps/homescreen/style/grid.css
@@ -19,7 +19,8 @@
    */
   border-bottom: 0.01px solid rgba(0,0,0,0.01);
 
-  visibility: hidden;
+  visibility: visible;
 }

change this visibility property to visible?
After modification, we still have no performance boost.

Sorry for the confusion. I want to make sure that I really know the homescreen's implementation. Is the following paragraph correct?

"When we start to scroll the homescreen, first it paints the current and the next page into two full screen size textures.
Then, homescreen app only draws these two static textures until we stop dragging. It prevents parsing css rule and redrawing icons when scrolling.
Thus we can get better performance in dragging mode."

Thanks!
Flags: needinfo?(crdlc)
I meant what you should remove all these changes about CSS

https://github.com/mozilla-b2g/gaia/commit/08ba523403475799861b06166391811226c8a0c8#diff-6a28e825b6a0ed8f688d6c11d4adddb5R17

-----

I don't know what gecko does here :) but from JS code we define the display prop to block for current page and the previous and next one. Maybe gecko doesn't paint them until they are on viewport (they're translated to -100% and 100% respectively) before scrolling

-----

Quick question, are we talking about panning/scrolling or dragging in edit mode?

Thnaks
Flags: needinfo?(crdlc)
Attached image homescreen.jpg
(In reply to Cristian Rodriguez (:crdlc) from comment #4)
> Quick question, are we talking about panning/scrolling or dragging in edit
> mode?
> 
> Thnaks

scrolling the homescreen page as the attachment 814825 [details]
Keywords: perf
Cristian - This feels like the fix for bug 924942 could also fix this bug potentially. Do you think we should mark this as a dupe?
Flags: needinfo?(crdlc)
Whiteboard: [c= p= s= u=]
I really think so Kevin, 10x, good catch
Flags: needinfo?(crdlc)
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → DUPLICATE
Whiteboard: [c= p= s= u=] → [c= p= s=2013.10.18 u=]
Target Milestone: --- → 1.2 C3(Oct25)
Whiteboard: [c= p= s=2013.10.18 u=] → [c= p= s= u=]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: