Backed out 5 changesets (bug 1691894) for causing hazard failures in nsXULPrototypeCache. CLOSED TREE
Backed out changeset 22dc870ee609 (bug 1691894) Backed out changeset 58c31e9d6ae3 (bug 1691894) Backed out changeset 7483e84149d8 (bug 1691894) Backed out changeset f977d6cfa973 (bug 1691894) Backed out changeset db4503476f34 (bug 1691894)
This commit is contained in:
@@ -101,22 +101,21 @@ void AsyncImagePipelineManager::AddPipeline(const wr::PipelineId& aPipelineId,
|
||||
if (mDestroyed) {
|
||||
return;
|
||||
}
|
||||
uint64_t id = wr::AsUint64(aPipelineId);
|
||||
|
||||
mPipelineTexturesHolders.WithEntryHandle(
|
||||
wr::AsUint64(aPipelineId), [&](auto&& holder) {
|
||||
if (holder) {
|
||||
// This could happen during tab move between different windows.
|
||||
// Previously removed holder could be still alive for waiting
|
||||
// destroyed.
|
||||
MOZ_ASSERT(holder.Data()->mDestroyedEpoch.isSome());
|
||||
holder.Data()->mDestroyedEpoch = Nothing(); // Revive holder
|
||||
holder.Data()->mWrBridge = aWrBridge;
|
||||
return;
|
||||
}
|
||||
|
||||
holder.Insert(MakeUnique<PipelineTexturesHolder>())->mWrBridge =
|
||||
aWrBridge;
|
||||
});
|
||||
PipelineTexturesHolder* holder =
|
||||
mPipelineTexturesHolders.Get(wr::AsUint64(aPipelineId));
|
||||
if (holder) {
|
||||
// This could happen during tab move between different windows.
|
||||
// Previously removed holder could be still alive for waiting destroyed.
|
||||
MOZ_ASSERT(holder->mDestroyedEpoch.isSome());
|
||||
holder->mDestroyedEpoch = Nothing(); // Revive holder
|
||||
holder->mWrBridge = aWrBridge;
|
||||
return;
|
||||
}
|
||||
holder = new PipelineTexturesHolder();
|
||||
holder->mWrBridge = aWrBridge;
|
||||
mPipelineTexturesHolders.Put(id, holder);
|
||||
}
|
||||
|
||||
void AsyncImagePipelineManager::RemovePipeline(
|
||||
@@ -162,10 +161,10 @@ void AsyncImagePipelineManager::AddAsyncImagePipeline(
|
||||
MOZ_ASSERT(aImageHost);
|
||||
uint64_t id = wr::AsUint64(aPipelineId);
|
||||
|
||||
MOZ_ASSERT(!mAsyncImagePipelines.Contains(id));
|
||||
auto holder = MakeUnique<AsyncImagePipeline>();
|
||||
MOZ_ASSERT(!mAsyncImagePipelines.Get(id));
|
||||
AsyncImagePipeline* holder = new AsyncImagePipeline();
|
||||
holder->mImageHost = aImageHost;
|
||||
mAsyncImagePipelines.Put(id, std::move(holder));
|
||||
mAsyncImagePipelines.Put(id, holder);
|
||||
AddPipeline(aPipelineId, /* aWrBridge */ nullptr);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user