Bug 1587210. Always clear mInvalidRect. r=mstange

In the future mInvalidRect and some other state should move out of DIGroup
and into a non-persistant struct that's only used during Group building.
This will allow us to completely avoid errors like this.

Differential Revision: https://phabricator.services.mozilla.com/D48706

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Jeff Muizelaar 2019-10-09 18:10:54 +00:00
Родитель e621c66d0b
Коммит 88c6d9a1dc
1 изменённых файлов: 4 добавлений и 1 удалений

Просмотреть файл

@ -731,7 +731,6 @@ struct DIGroup {
} }
} }
mFonts = std::move(fonts); mFonts = std::move(fonts);
mInvalidRect.SetEmpty();
aResources.SetBlobImageVisibleArea( aResources.SetBlobImageVisibleArea(
mKey.value().second(), mKey.value().second(),
ViewAs<ImagePixel>(mVisibleRect, PixelCastJustification::LayerIsImage)); ViewAs<ImagePixel>(mVisibleRect, PixelCastJustification::LayerIsImage));
@ -1217,6 +1216,8 @@ void Grouper::ConstructGroups(nsDisplayListBuilder* aDisplayListBuilder,
aCommandBuilder->CreateOrRecycleWebRenderUserData<WebRenderGroupData>( aCommandBuilder->CreateOrRecycleWebRenderUserData<WebRenderGroupData>(
item, aBuilder.GetRenderRoot()); item, aBuilder.GetRenderRoot());
groupData->mFollowingGroup.mInvalidRect.SetEmpty();
// Initialize groupData->mFollowingGroup with data from currentGroup. // Initialize groupData->mFollowingGroup with data from currentGroup.
// We want to copy out this information before calling EndGroup because // We want to copy out this information before calling EndGroup because
// EndGroup will set mLastVisibleRect depending on whether // EndGroup will set mLastVisibleRect depending on whether
@ -1481,6 +1482,8 @@ void WebRenderCommandBuilder::DoGroupingForDisplayList(
GP("Inherrited scale %f %f\n", scale.width, scale.height); GP("Inherrited scale %f %f\n", scale.width, scale.height);
GP("Bounds: %d %d %d %d vs %d %d %d %d\n", p.x, p.y, p.width, p.height, q.x, GP("Bounds: %d %d %d %d vs %d %d %d %d\n", p.x, p.y, p.width, p.height, q.x,
q.y, q.width, q.height); q.y, q.width, q.height);
group.mInvalidRect.SetEmpty();
if (group.mAppUnitsPerDevPixel != appUnitsPerDevPixel || if (group.mAppUnitsPerDevPixel != appUnitsPerDevPixel ||
group.mScale != scale || group.mResidualOffset != residualOffset) { group.mScale != scale || group.mResidualOffset != residualOffset) {
GP("Property change. Deleting blob\n"); GP("Property change. Deleting blob\n");