author | Ciure Andrei <aciure@mozilla.com> |
Sat, 06 Oct 2018 05:17:41 +0300 | |
changeset 439887 | d4cd818673005e926f505b82eccb89b0b46045f7 |
parent 439886 | f936a4baa698ac02c3ae215f61dee51c595cb37b |
child 439888 | 497bb152e567c56bca163d258d83b4bc9087fb37 |
push id | 70502 |
push user | aciure@mozilla.com |
push date | Sat, 06 Oct 2018 02:18:19 +0000 |
treeherder | autoland@d4cd81867300 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
bugs | 1493616 |
milestone | 64.0a1 |
backs out | f936a4baa698ac02c3ae215f61dee51c595cb37b |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/gfx/layers/wr/WebRenderCommandBuilder.cpp +++ b/gfx/layers/wr/WebRenderCommandBuilder.cpp @@ -731,16 +731,17 @@ struct DIGroup if (!mInvalidRect.Contains(bounds)) { GP("Passing\n"); dirty = false; } if (mInvalidRect.Contains(bounds)) { GP("Wholely contained\n"); BlobItemData* data = GetBlobItemData(item); + data->mInvalid = false; } else { BlobItemData* data = GetBlobItemData(item); if (data->mInvalid) { if (item->GetType() == DisplayItemType::TYPE_TRANSFORM) { nsDisplayTransform* transformItem = static_cast<nsDisplayTransform*>(item); const Matrix4x4Flagged& t = transformItem->GetTransform(); Matrix t2d; bool is2D = t.Is2D(&t2d); @@ -1094,21 +1095,16 @@ Grouper::ConstructItemInsideInactive(Web wr::DisplayListBuilder& aBuilder, wr::IpcResourceUpdateQueue& aResources, DIGroup* aGroup, nsDisplayItem* aItem, const StackingContextHelper& aSc) { nsDisplayList* children = aItem->GetChildren(); BlobItemData* data = GetBlobItemDataForGroup(aItem, aGroup); - /* mInvalid unfortunately persists across paints. Clear it so that if we don't - * set it to 'true' we ensure that we're not using the value from the last - * time that we painted */ - data->mInvalid = false; - if (aItem->GetType() == DisplayItemType::TYPE_FILTER) { gfx::Size scale(1, 1); // If ComputeDifferences finds any change, we invalidate the entire container item. // This is needed because blob merging requires the entire item to be within the invalid region. data->mInvalid = BuildLayer(aItem, data, mDisplayListBuilder, scale); } else if (aItem->GetType() == DisplayItemType::TYPE_TRANSFORM) { nsDisplayTransform* transformItem = static_cast<nsDisplayTransform*>(aItem); const Matrix4x4Flagged& t = transformItem->GetTransform();