Open Bug 1219020 Opened 5 years ago Updated 3 years ago

Adjusting "left" on an "opacity:0" abspos element triggers an extra "ghost" invalidation

Categories

(Core :: Graphics: Layers, defect, P3)

defect

Tracking

()

Tracking Status
firefox44 --- affected

People

(Reporter: dholbert, Assigned: mattwoodrow, NeedInfo)

Details

(Whiteboard: [gfx-noted])

Attachments

(3 files)

Attached file testcase 1
[Spinning off this bug for a secondary issue that I ran into when working with testcases in bug 1211654]

STR:
 0. Set nglayout.debug.paint_flashing to true.
 1. Load attached testcase.

EXPECTED RESULTS:
Every second, exactly 1 new invalidated block should appear, along the top edge of the bordered area.

ACTUAL RESULTS:
An *extra* block of "ghost" invalidation also appears every second, just after the expected invalidation, at an offset down and to the right.

NOTES:
 - The offset between the expected invalidation & the "ghost" invalidation grows larger if I shift the contianer further down the page & to the right.
 - If you disable/remove the "opacity:0" declaration on #moveMe, then the ghost invalidation stops happening.
Looks like a coordinate system mixup maybe.
Bug 1216851 has fixed this particular testcase, but adding 'background-color:red' to the style for moveMe breaks it again.
This happens when the inactive layer tree for the opacity moves from the main painted layer, into the (recently activated) one for the left: property.

We compare layer trees, but our coordinates are wrong since we're using a different active geometry root for the new layer. We don't need to do this at all.
Assignee: nobody → matt.woodrow
Attachment #8681733 - Flags: review?(roc)
We still have two invalidations for each movement after this patch. This is because we push the moving content into its own layer, but we hit the 250ms timeout for this activity long before we move again.
Flags: needinfo?(matt.woodrow)
Whiteboard: [gfx-noted]
You need to log in before you can comment on or make changes to this bug.