Closed Bug 1198021 Opened 9 years ago Closed 9 years ago

[APZ] Sometimes seeing checkerboarding when displayport changes size

Categories

(Core :: Layout, defect, P2)

defect

Tracking

()

RESOLVED FIXED
mozilla45
Tracking Status
firefox43 --- affected
firefox45 --- fixed

People

(Reporter: mstange, Assigned: mstange)

References

()

Details

Attachments

(1 file)

STR: 1. Go to http://lea.verou.me/2015/06/conical-gradients-today/ 2. Scroll down to the bottom of the page very quickly. 3. Quickly scroll up and down again. 4. Repeat step 3 until you see the page turn white briefly. Actual results: After seeing orange checkerboarding, suddenly the whole page turns white and then gets refreshed with the painted page contents. Expected results: The white flash shouldn't happen. We know that the page background is light orange, and we are using that color as the checkerboarding color usually, just not in some cases when scrolling to the page bottom.
I've seen these white flashes in many places, and I think we need to fix this before we ship APZ.
Blocks: all-aboard-apz
No longer blocks: apz-desktop
Do you have any other URLs on which you've seen this? I can't reproduce it on the URL you provided in comment 0. I can hit checkerboarding easily enough, but it's always the orange color that is the page background.
Flags: needinfo?(mstange)
I can't reproduce it on the URL from comment 0 anymore either. So maybe we fixed something! I also can't reproduce it with the URL from bug 1217786 anymore. I can still reproduce it with the testcase in bug 1221094, on the first scroll after the page loads.
Flags: needinfo?(mstange)
Hm, so with the testcase on bug 1221094 I can reproduce a flash of white on the first scroll. I copied the page and added a background-color:orange to the body, and when I scroll I don't see the flash of white. The text still disappears for a split second, but the background is orange throughout. I also turned on the minimap and the flash seems to correspond with an increase in the size of the displayport as we go from panning slowly to panning fast. I'll update this bug to cover this issue, assuming we don't already have a bug for it somewhere else.
Summary: [APZ] Sometimes seeing white checkerboarding, even when the page background isn't white → [APZ] Sometimes seeing checkerboarding when displayport changes size
When the flash happens, the layer's content client changes from SingleTiled to MultiTiled, and the corresponding content host disappears for a few composites. Matt, do you want to fix this? > LayerManager (0x129251640) > ContainerLayerComposite (0x112c62800) [shadow-visible=< (x=0, y=0, w=1988, h=978); >] [visible=< (x=0, y=0, w=1988, h=978); >] [opaqueContent] [metrics0={ [cb=(x=0.000000, y=0.000000, w=1988.000000, h=978.000000)] [sr=(x=0.000000, y=0.000000, w=994.000000, h=489.000000)] [s=(0,0)] [dp=(x=0.000000, y=0.000000, w=994.000000, h=489.000000)] [cdp=(x=0.000000, y=0.000000, w=0.000000, h=0.000000)] [color=rgba(0, 0, 0, 0.000000)] [scrollId=9] [z=2] }] > PaintedLayerComposite (0x112c67400) [shadow-visible=< (x=0, y=0, w=1988, h=2); >] [bounds=(x=0, y=-2, w=1988, h=980)] [visible=< (x=0, y=0, w=1988, h=978); >] { hitregion=< (x=0, y=0, w=1988, h=978); >} [opaqueContent] [valid=< (x=0, y=0, w=1988, h=978); >] > TiledContentHost (0x112c8fae0) > RefLayerComposite (0x112c64400) [shadow-clip=(x=0, y=2, w=1988, h=976)] [shadow-transform=[ 1 0; 0 1; 0 2; ]] [shadow-visible=< (x=0, y=0, w=1988, h=976); >] [clip=(x=0, y=2, w=1988, h=976)] [transform=[ 1 0; 0 1; 0 2; ]] [visible=< (x=0, y=0, w=1988, h=976); >] [id=8] > ContainerLayerComposite (0x11f454400) [shadow-visible=< (x=0, y=0, w=1988, h=976); >] [visible=< (x=0, y=0, w=1988, h=976); >] [opaqueContent] > PaintedLayerComposite (0x119f1f000) [not visible] { hitregion=< (x=0, y=0, w=1988, h=976); >} [opaqueContent] > PaintedLayerComposite (0x12083c800) [shadow-clip=(x=0, y=0, w=0, h=0)] [shadow-transform=[ 1 0; 0 1; 0 -20; ]] [clip=(x=0, y=0, w=0, h=0)] [not visible] [metrics0={ [cb=(x=0.000000, y=0.000000, w=1988.000000, h=976.000000)] [sr=(x=0.000000, y=0.000000, w=994.000000, h=17321.599609)] [s=(0,0)] [dp=(x=0.000000, y=0.000000, w=994.000000, h=768.000000)] [cdp=(x=0.000000, y=0.000000, w=0.000000, h=0.000000)] [color=rgba(255, 255, 255, 1.000000)] [scrollId=6] [rcd] [clip=(x=0, y=0, w=1988, h=976)] [z=2] }] > ColorLayerComposite (0x1239cf400) [shadow-clip=(x=0, y=0, w=1988, h=976)] [shadow-transform=[ 1 0; 0 1; 0 -20; ]] [shadow-visible=< (x=0, y=20, w=1988, h=14); (x=0, y=34, w=504, h=962); (x=1492, y=34, w=496, h=962); >] [bounds=(x=0, y=0, w=1988, h=34643)] [visible=< (x=0, y=0, w=1988, h=1536); >] { hitregion=< (x=0, y=0, w=1988, h=34644); >} [opaqueContent] [metrics0={ [cb=(x=0.000000, y=0.000000, w=1988.000000, h=976.000000)] [sr=(x=0.000000, y=0.000000, w=994.000000, h=17321.599609)] [s=(0,0)] [dp=(x=0.000000, y=0.000000, w=994.000000, h=768.000000)] [cdp=(x=0.000000, y=0.000000, w=0.000000, h=0.000000)] [color=rgba(255, 255, 255, 1.000000)] [scrollId=6] [rcd] [clip=(x=0, y=0, w=1988, h=976)] [z=2] }] [color=rgba(255, 255, 255, 1.000000)] [bounds=(x=0, y=0, w=1988, h=1536)] > ContainerLayerComposite (0x12009c400) [shadow-clip=(x=0, y=0, w=1988, h=976)] [shadow-transform=[ 1 0; 0 1; 505 12; ]] [shadow-visible=< (x=-1, y=2, w=988, h=962); >] [transform=[ 1 0; 0 1; 505 32; ]] [visible=< (x=-1, y=2, w=988, h=1475); >] [metrics0={ [cb=(x=0.000000, y=0.000000, w=1988.000000, h=976.000000)] [sr=(x=0.000000, y=0.000000, w=994.000000, h=17321.599609)] [s=(0,0)] [dp=(x=0.000000, y=0.000000, w=994.000000, h=768.000000)] [cdp=(x=0.000000, y=0.000000, w=0.000000, h=0.000000)] [color=rgba(255, 255, 255, 1.000000)] [scrollId=6] [rcd] [clip=(x=0, y=0, w=1988, h=976)] [z=2] }] > PaintedLayerComposite (0x12083a400) [shadow-visible=< (x=-1, y=2, w=988, h=962); >] [bounds=(x=-2, y=2, w=989, h=1475)] [visible=< (x=-1, y=2, w=988, h=1359); (x=-1, y=1365, w=933, h=35); (x=-1, y=1403, w=974, h=35); (x=-1, y=1442, w=475, h=35); >] { hitregion=< (x=0, y=0, w=978, h=34580); >} [opaqueContent] [valid=< (x=-1, y=2, w=988, h=1359); (x=-1, y=1365, w=933, h=35); (x=-1, y=1403, w=974, h=35); (x=-1, y=1442, w=475, h=35); >] > !!! ---> TiledContentHost (0x1125998e0) > ContainerLayerComposite (0x1285e6000) [shadow-clip=(x=0, y=0, w=1988, h=976)] [shadow-visible=< (x=1956, y=0, w=32, h=976); >] [clip=(x=0, y=0, w=1988, h=976)] [visible=< (x=1956, y=0, w=32, h=976); >] > PaintedLayerComposite (0x1287f8c00) [shadow-visible=< (x=1956, y=0, w=32, h=976); >] [bounds=(x=1956, y=0, w=32, h=976)] [visible=< (x=1956, y=0, w=32, h=976); >] { hitregion=< (x=1956, y=0, w=32, h=976); >} [valid=< (x=1956, y=0, w=32, h=976); >] > TiledContentHost (0x1125997c0) > ContainerLayerComposite (0x1285e6c00) [shadow-clip=(x=0, y=0, w=1988, h=976)] [shadow-transform=[ 1 0; 0 1; 0 0.546513; ]] [shadow-visible=< (x=1960, y=2, w=26, h=52); >] [clip=(x=0, y=0, w=1988, h=976)] [visible=< (x=1960, y=2, w=26, h=52); >] [vscrollbar=6] > PaintedLayerComposite (0x1285f1800) [shadow-transform=[ 1 0; 0 1; 1960 2; ]] [shadow-visible=< (x=0, y=0, w=26, h=52); >] [transform=[ 1 0; 0 1; 1960 2; ]] [bounds=(x=0, y=0, w=26, h=52)] [visible=< (x=0, y=0, w=26, h=52); >] { hitregion=< (x=0, y=0, w=26, h=52); > dispatchtocontentregion=< (x=0, y=0, w=26, h=52); >} [valid=< (x=0, y=0, w=26, h=52); >] > TiledContentHost (0x112599340) > PaintedLayerComposite (0x124eb9c00) [not visible] { hitregion=< (x=0, y=2, w=100, h=32); (x=32, y=34, w=68, h=4); >} [opaqueContent] > > Painting --- compositing layer tree: > LayerManager (0x129251640) > ContainerLayerComposite (0x112c62800) [shadow-visible=< (x=0, y=0, w=1988, h=978); >] [visible=< (x=0, y=0, w=1988, h=978); >] [opaqueContent] [metrics0={ [cb=(x=0.000000, y=0.000000, w=1988.000000, h=978.000000)] [sr=(x=0.000000, y=0.000000, w=994.000000, h=489.000000)] [s=(0,0)] [dp=(x=0.000000, y=0.000000, w=994.000000, h=489.000000)] [cdp=(x=0.000000, y=0.000000, w=0.000000, h=0.000000)] [color=rgba(0, 0, 0, 0.000000)] [scrollId=9] [z=2] }] > PaintedLayerComposite (0x112c67400) [shadow-visible=< (x=0, y=0, w=1988, h=978); >] [bounds=(x=0, y=-2, w=1988, h=980)] [visible=< (x=0, y=0, w=1988, h=978); >] { hitregion=< (x=0, y=0, w=1988, h=978); >} [opaqueContent] [valid=< (x=0, y=0, w=1988, h=978); >] > TiledContentHost (0x112c8fae0) > RefLayerComposite (0x112c64400) [shadow-clip=(x=0, y=2, w=1988, h=976)] [shadow-transform=[ 1 0; 0 1; 0 2; ]] [shadow-visible=< (x=0, y=0, w=1988, h=976); >] [clip=(x=0, y=2, w=1988, h=976)] [transform=[ 1 0; 0 1; 0 2; ]] [visible=< (x=0, y=0, w=1988, h=976); >] [id=8] > ContainerLayerComposite (0x11f454400) [shadow-visible=< (x=0, y=0, w=1988, h=976); >] [visible=< (x=0, y=0, w=1988, h=976); >] [opaqueContent] > PaintedLayerComposite (0x119f1f000) [not visible] { hitregion=< (x=0, y=0, w=1988, h=976); >} [opaqueContent] > PaintedLayerComposite (0x12083c800) [shadow-clip=(x=0, y=0, w=0, h=0)] [shadow-transform=[ 1 0; 0 1; 0 -86; ]] [clip=(x=0, y=0, w=0, h=0)] [not visible] [metrics0={ [cb=(x=0.000000, y=0.000000, w=1988.000000, h=976.000000)] [sr=(x=0.000000, y=0.000000, w=994.000000, h=17321.599609)] [s=(0,0)] [dp=(x=0.000000, y=0.000000, w=994.000000, h=768.000000)] [cdp=(x=0.000000, y=0.000000, w=0.000000, h=0.000000)] [color=rgba(255, 255, 255, 1.000000)] [scrollId=6] [rcd] [clip=(x=0, y=0, w=1988, h=976)] [z=2] }] > ColorLayerComposite (0x1239cf400) [shadow-clip=(x=0, y=0, w=1988, h=976)] [shadow-transform=[ 1 0; 0 1; 0 -86; ]] [shadow-visible=< (x=0, y=0, w=1988, h=1536); >] [bounds=(x=0, y=0, w=1988, h=34643)] [visible=< (x=0, y=0, w=1988, h=1536); >] { hitregion=< (x=0, y=0, w=1988, h=34644); >} [opaqueContent] [metrics0={ [cb=(x=0.000000, y=0.000000, w=1988.000000, h=976.000000)] [sr=(x=0.000000, y=0.000000, w=994.000000, h=17321.599609)] [s=(0,0)] [dp=(x=0.000000, y=0.000000, w=994.000000, h=768.000000)] [cdp=(x=0.000000, y=0.000000, w=0.000000, h=0.000000)] [color=rgba(255, 255, 255, 1.000000)] [scrollId=6] [rcd] [clip=(x=0, y=0, w=1988, h=976)] [z=2] }] [color=rgba(255, 255, 255, 1.000000)] [bounds=(x=0, y=0, w=1988, h=1536)] > ContainerLayerComposite (0x12009c400) [shadow-clip=(x=0, y=0, w=1988, h=976)] [shadow-transform=[ 1 0; 0 1; 505 -54; ]] [shadow-visible=< (x=-1, y=2, w=988, h=1475); >] [transform=[ 1 0; 0 1; 505 32; ]] [visible=< (x=-1, y=2, w=988, h=1475); >] [metrics0={ [cb=(x=0.000000, y=0.000000, w=1988.000000, h=976.000000)] [sr=(x=0.000000, y=0.000000, w=994.000000, h=17321.599609)] [s=(0,0)] [dp=(x=0.000000, y=0.000000, w=994.000000, h=768.000000)] [cdp=(x=0.000000, y=0.000000, w=0.000000, h=0.000000)] [color=rgba(255, 255, 255, 1.000000)] [scrollId=6] [rcd] [clip=(x=0, y=0, w=1988, h=976)] [z=2] }] > ! ----> PaintedLayerComposite (0x12083a400) [shadow-visible=< (x=-1, y=2, w=988, h=1359); (x=-1, y=1365, w=933, h=35); (x=-1, y=1403, w=974, h=35); (x=-1, y=1442, w=475, h=35); >] [bounds=(x=-2, y=2, w=989, h=1475)] [visible=< (x=-1, y=2, w=988, h=1359); (x=-1, y=1365, w=933, h=35); (x=-1, y=1403, w=974, h=35); (x=-1, y=1442, w=475, h=35); >] { hitregion=< (x=0, y=0, w=978, h=34580); >} [opaqueContent] [valid=< (x=-1, y=2, w=988, h=1359); (x=-1, y=1365, w=933, h=35); (x=-1, y=1403, w=974, h=35); (x=-1, y=1442, w=475, h=35); >] > ContainerLayerComposite (0x1285e6000) [shadow-clip=(x=0, y=0, w=1988, h=976)] [shadow-visible=< (x=1956, y=0, w=32, h=976); >] [clip=(x=0, y=0, w=1988, h=976)] [visible=< (x=1956, y=0, w=32, h=976); >] > PaintedLayerComposite (0x1287f8c00) [shadow-visible=< (x=1956, y=0, w=32, h=976); >] [bounds=(x=1956, y=0, w=32, h=976)] [visible=< (x=1956, y=0, w=32, h=976); >] { hitregion=< (x=1956, y=0, w=32, h=976); >} [valid=< (x=1956, y=0, w=32, h=976); >] > TiledContentHost (0x1125997c0) > ContainerLayerComposite (0x1285e6c00) [shadow-clip=(x=0, y=0, w=1988, h=976)] [shadow-transform=[ 1 0; 0 1; 0 2.35001; ]] [shadow-visible=< (x=1960, y=2, w=26, h=52); >] [clip=(x=0, y=0, w=1988, h=976)] [visible=< (x=1960, y=2, w=26, h=52); >] [vscrollbar=6] > PaintedLayerComposite (0x1285f1800) [shadow-transform=[ 1 0; 0 1; 1960 2; ]] [shadow-visible=< (x=0, y=0, w=26, h=52); >] [transform=[ 1 0; 0 1; 1960 2; ]] [bounds=(x=0, y=0, w=26, h=52)] [visible=< (x=0, y=0, w=26, h=52); >] { hitregion=< (x=0, y=0, w=26, h=52); > dispatchtocontentregion=< (x=0, y=0, w=26, h=52); >} [valid=< (x=0, y=0, w=26, h=52); >] > TiledContentHost (0x112599340) > PaintedLayerComposite (0x124eb9c00) [not visible] { hitregion=< (x=0, y=2, w=100, h=32); (x=32, y=34, w=68, h=4); >} [opaqueContent]
Flags: needinfo?(matt.woodrow)
So the ContentHost is forcefully detached from CompositableParent::Destroy, which is called from the child process from the SingleTiledContentClient destructor (or rather its inherited CompositableClient destructor). The SingleTiledContentClient is destroyed in ClientTiledPaintedLayer::ClearCachedResources(), which is called from ClientTiledPaintedLayer::RenderLayer() because !mContentClient->SupportsLayerSize(layerSize, ClientManager()).
Bug 1198021 - When the ContentClient of a ClientTiledPaintedLayer changes, don't destroy the old content client until after the layer transaction has been sent. r?nical
Attachment #8693002 - Flags: review?(nical.bugzilla)
Assignee: nobody → mstange
Status: NEW → ASSIGNED
Flags: needinfo?(matt.woodrow)
Attachment #8693002 - Flags: review?(nical.bugzilla) → review+
Comment on attachment 8693002 [details] MozReview Request: Bug 1198021 - When the ContentClient of a ClientTiledPaintedLayer changes, don't destroy the old content client until after the layer transaction has been sent. r?nical https://reviewboard.mozilla.org/r/26369/#review23883
No longer blocks: 1229125
https://hg.mozilla.org/integration/mozilla-inbound/rev/830117f932295a398962749c7bf1759d6c445518 Bug 1198021 - When the ContentClient of a ClientTiledPaintedLayer changes, don't destroy the old content client until after the layer transaction has been sent. r=nical
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla45
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: