Bug 1404181 - Part 13: Expose DisplayItemData better from FrameLayerBuilder so we can query the geometry (for sync decode invalidations). r=mstange

MozReview-Commit-ID: 43oxBMdRRTK

--HG--
extra : rebase_source : b80cb0ee46d2c2bcc17967c51bc6de65043b6be6
This commit is contained in:
Matt Woodrow ext:(%2C%20Miko%20Mynttinen%20%3Cmikokm%40gmail.com%3E%2C%20Timothy%20Nikkel%20%3Ctnikkel%40gmail.com%3E) 2017-09-28 13:43:11 +13:00
parent 983bb1b63a
commit eea0ea6471
3 changed files with 13 additions and 14 deletions

View File

@ -151,8 +151,8 @@ PrintDisplayItemTo(nsDisplayListBuilder* aBuilder, nsDisplayItem* aItem,
}
#endif
aStream << nsPrintfCString("%s p=0x%p f=0x%p(%s) %sbounds(%d,%d,%d,%d) layerBounds(%d,%d,%d,%d) visible(%d,%d,%d,%d) componentAlpha(%d,%d,%d,%d) clip(%s) asr(%s) clipChain(%s)%s ref=0x%p agr=0x%p",
aItem->Name(), aItem, (void*)f, NS_ConvertUTF16toUTF8(contentData).get(),
aStream << nsPrintfCString("%s p=0x%p f=0x%p(%s) key=%d %sbounds(%d,%d,%d,%d) layerBounds(%d,%d,%d,%d) visible(%d,%d,%d,%d) componentAlpha(%d,%d,%d,%d) clip(%s) asr(%s) clipChain(%s)%s ref=0x%p agr=0x%p",
aItem->Name(), aItem, (void*)f, NS_ConvertUTF16toUTF8(contentData).get(), aItem->GetPerFrameKey(),
(aItem->ZIndex() ? nsPrintfCString("z=%d ", aItem->ZIndex()).get() : ""),
rect.x, rect.y, rect.width, rect.height,
layerRect.x, layerRect.y, layerRect.width, layerRect.height,
@ -190,13 +190,12 @@ PrintDisplayItemTo(nsDisplayListBuilder* aBuilder, nsDisplayItem* aItem,
aStream << "</a>";
}
#endif
uint32_t key = aItem->GetPerFrameKey();
Layer* layer = mozilla::FrameLayerBuilder::GetDebugOldLayerFor(f, key);
if (layer) {
DisplayItemData* data = mozilla::FrameLayerBuilder::GetOldDataFor(aItem);
if (data && data->GetLayer()) {
if (aDumpHtml) {
aStream << nsPrintfCString(" <a href=\"#%p\">layer=%p</a>", layer, layer);
aStream << nsPrintfCString(" <a href=\"#%p\">layer=%p</a>", data->GetLayer(), data->GetLayer());
} else {
aStream << nsPrintfCString(" layer=0x%p", layer);
aStream << nsPrintfCString(" layer=0x%p", data->GetLayer());
}
}
#ifdef MOZ_DUMP_PAINTING

View File

@ -2132,16 +2132,16 @@ FrameLayerBuilder::ClearCachedGeometry(nsDisplayItem* aItem)
}
}
/* static */ Layer*
FrameLayerBuilder::GetDebugOldLayerFor(nsIFrame* aFrame, uint32_t aDisplayItemKey)
/* static */ DisplayItemData*
FrameLayerBuilder::GetOldDataFor(nsDisplayItem* aItem)
{
const SmallPointerArray<DisplayItemData>& array = aFrame->DisplayItemData();
const SmallPointerArray<DisplayItemData>& array = aItem->Frame()->DisplayItemData();
for (uint32_t i = 0; i < array.Length(); i++) {
DisplayItemData *data = DisplayItemData::AssertDisplayItemData(array.ElementAt(i));
if (data->mDisplayItemKey == aDisplayItemKey) {
return data->mLayer;
if (data->mDisplayItemKey == aItem->GetPerFrameKey()) {
return data;
}
}
return nullptr;

View File

@ -64,7 +64,7 @@ public:
friend class FrameLayerBuilder;
uint32_t GetDisplayItemKey() { return mDisplayItemKey; }
layers::Layer* GetLayer() { return mLayer; }
layers::Layer* GetLayer() const { return mLayer; }
nsDisplayItemGeometry* GetGeometry() const { return mGeometry.get(); }
void Invalidate() { mIsInvalid = true; }
void ClearAnimationCompositorState();
@ -504,7 +504,7 @@ public:
void ClearCachedGeometry(nsDisplayItem* aItem);
static Layer* GetDebugOldLayerFor(nsIFrame* aFrame, uint32_t aDisplayItemKey);
static DisplayItemData* GetOldDataFor(nsDisplayItem* aItem);
/**
* Return the layer that all display items of aFrame were assigned to in the