Closed Bug 802385 Opened 9 years ago Closed 9 years ago

Full-page invalidation when scrolling bugzilla.m.o/enter_bug.cgi

Categories

(Core :: Layout, defect)

x86
macOS
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: sicking, Assigned: mattwoodrow)

References

Details

Attachments

(1 file)

Steps to reproduce:

1. Go to https://bugzilla.mozilla.org/enter_bug.cgi?product=Core
2. Scroll up or down
3. Rinse and repeat

Actual results:
We invalidate the whole page even if the mouse isn't hovering any part of the page.

Strangely enough one of the enter_bug.cgi tabs I have open is invalidating correctly. I can't seem to reproduce that in any other enter_bug.cgi tab though. And it reproduces fine in any newly opened tab so it might not matter.

Expected results:
Only invalidate the newly scroll-in area.

Works fine in order builds that I have, so this is likely a dlbi regression.
WFM. We do repaint the whole page when we reach the very end of the scroll range, but that's not related to DLBI.

Fixed?
I still see this, but I've realized that the steps to reproduce are a bit more complicated.

Also, I have a retina display which may or may not affect things.

Better steps to reproduce:

1. Enable paint flashing
2. open https://bugzilla.mozilla.org/enter_bug.cgi?product=Core
3. select the first component in the component listbox
4. use the down-key to step through the whole select box (yes, this takes a few seconds).
5. Scroll to the bottom of the page using the mouse wheel.
6. Scroll back up to the top of the page.
7. Repeat steps 5 and 6 until you start seeing full-page invalidation.
8. If it still isn't happening, scroll up to the top of the page, scroll the component listbox to the top and repeat from step 3.

Expected behavior:
Scrolling the page should just invalidate the newly scrolled-in area.

Actual results:
At first invalidation happens as expected. However suddenly the page switches "mode" and starts invalidating the full page when scrolling. Once in this state any time I scroll the page even a little it invalidates the full page.

When in this state other pages aren't affected. I.e. I can switch tab and scrolling those pages invalidates what's needed. However switching back to the bugzilla tab and scrolling it invalidates the full page.

Once I'm in this state, reloading the page "fixes" it and it only repaints what's needed.

I see this behavior on quite a few pages. But it requires interacting with them for a bit before it goes into the bad "mode".
I can't reproduce this sadly.

The only unnecessary painting that I see is that we repaint the Hardware/OS fields while changing selection in the component listbox. Something is triggering actual invalidation here, so I assume some styles are being modified. Doubt this is overly important.
I'm also seeing some other potentially suspect invalidation issues, but this bug is purely about the full-page invalidation on scrolling, so lets stick to that.

I was able to reproduce this with all my extensions disabled, so it's not related to any extensions I have installed.

However, I am only able to reproduce this with a persona background enabled!

I'm not 100% sure that it's related to that since sometimes the bug is a bit hard to reproduce, but so far I've only been able to reproduce while using a persona. I'm currently using this one in case it makes a difference:

http://www.getpersonas.com/en-US/persona/205162
Looks like the titlebar layer manager (BasicLayers) was triggering component alpha layer flattening and we continued to use that for the main layer manager.

Thanks for the STR Jonas!
Attachment #684276 - Flags: review?(roc)
Does this mean that people using a Persona with BasicLayers always have horrible scrolling performance? I think we should investigate that too.
https://hg.mozilla.org/integration/mozilla-inbound/rev/d30b99cfd933
Assignee: nobody → matt.woodrow
Whiteboard: [leave open]
Paint flashing when scrolling with BasicLayers + a persona looks sane, closing.
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Whiteboard: [leave open]
You need to log in before you can comment on or make changes to this bug.