Bug 1492925 - Ensure we release the shared surfaces when a WebRender pipeline is removed. r=sotaro

This commit is contained in:
Andrew Osmond
2018-09-20 21:27:50 -04:00
parent 24d8f0d24c
commit fe9b545330

View File

@@ -621,7 +621,16 @@ AsyncImagePipelineManager::ProcessPipelineRemoved(const wr::PipelineId& aPipelin
return;
}
if (auto entry = mPipelineTexturesHolders.Lookup(wr::AsUint64(aPipelineId))) {
if (entry.Data()->mDestroyedEpoch.isSome()) {
PipelineTexturesHolder* holder = entry.Data();
if (holder->mDestroyedEpoch.isSome()) {
// Explicitly release all of the shared surfaces.
while (!holder->mExternalImages.empty()) {
DebugOnly<bool> released =
SharedSurfacesParent::Release(holder->mExternalImages.front().mImageId);
MOZ_ASSERT(released);
holder->mExternalImages.pop();
}
// Remove Pipeline
entry.Remove();
}