Bug 1633453 - Clear display item cache when the display list send fails or WR backend changes r=jrmuizel

Differential Revision: https://phabricator.services.mozilla.com/D72692
This commit is contained in:
Miko Mynttinen
2020-04-29 02:26:08 +00:00
parent 31fcc37da3
commit ab9a0ed1a1
5 changed files with 24 additions and 12 deletions

View File

@@ -433,11 +433,16 @@ void WebRenderLayerManager::EndTransactionWithoutLayer(
renderRootDL->mScrollData.emplace(std::move(mScrollData));
}
WrBridge()->EndTransaction(renderRootDLs, mLatestTransactionId,
containsSVGGroup,
mTransactionIdAllocator->GetVsyncId(),
mTransactionIdAllocator->GetVsyncStart(),
refreshStart, mTransactionStart, mURL);
bool ret = WrBridge()->EndTransaction(
renderRootDLs, mLatestTransactionId, containsSVGGroup,
mTransactionIdAllocator->GetVsyncId(),
mTransactionIdAllocator->GetVsyncStart(), refreshStart,
mTransactionStart, mURL);
if (!ret) {
// Failed to send display list, reset display item cache state.
mDisplayItemCache.Clear();
}
WrBridge()->SendSetFocusTarget(mFocusTarget);
mFocusTarget = FocusTarget();
}
@@ -615,6 +620,7 @@ void WebRenderLayerManager::WrUpdated() {
ClearAsyncAnimations();
mWebRenderCommandBuilder.ClearCachedResources();
DiscardLocalImages();
mDisplayItemCache.Clear();
if (mWidget) {
if (dom::BrowserChild* browserChild = mWidget->GetOwningBrowserChild()) {