mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-26 20:30:41 +00:00
Bug 1382091 - Delete ImageKeys with ClearCachedResources r=nical
This commit is contained in:
parent
288e69595c
commit
200cae20a8
@ -465,13 +465,13 @@ void
|
||||
WebRenderBridgeChild::BeginClearCachedResources()
|
||||
{
|
||||
mIsInClearCachedResources = true;
|
||||
SendClearCachedResources();
|
||||
}
|
||||
|
||||
void
|
||||
WebRenderBridgeChild::EndClearCachedResources()
|
||||
{
|
||||
ProcessWebRenderParentCommands();
|
||||
SendClearCachedResources();
|
||||
mIsInClearCachedResources = false;
|
||||
}
|
||||
|
||||
|
@ -846,11 +846,11 @@ WebRenderBridgeParent::RecvClearCachedResources()
|
||||
mCompositorBridge->ObserveLayerUpdate(GetLayersId(), GetChildLayerObserverEpoch(), false);
|
||||
|
||||
// Clear resources
|
||||
// XXX Can we clear more resources?
|
||||
++mWrEpoch; // Update webrender epoch
|
||||
mApi->ClearRootDisplayList(wr::NewEpoch(mWrEpoch), mPipelineId);
|
||||
// Schedule composition to clean up Pipeline
|
||||
mCompositorScheduler->ScheduleComposition();
|
||||
DeleteOldImages();
|
||||
// Remove animations.
|
||||
for (std::unordered_set<uint64_t>::iterator iter = mActiveAnimations.begin(); iter != mActiveAnimations.end(); iter++) {
|
||||
mAnimStorage->ClearById(*iter);
|
||||
|
@ -630,18 +630,18 @@ WebRenderLayerManager::MakeSnapshotIfRequired(LayoutDeviceIntSize aSize)
|
||||
void
|
||||
WebRenderLayerManager::AddImageKeyForDiscard(wr::ImageKey key)
|
||||
{
|
||||
mImageKeys.push_back(key);
|
||||
mImageKeysToDelete.push_back(key);
|
||||
}
|
||||
|
||||
void
|
||||
WebRenderLayerManager::DiscardImages()
|
||||
{
|
||||
if (WrBridge()->IPCOpen()) {
|
||||
for (auto key : mImageKeys) {
|
||||
for (auto key : mImageKeysToDelete) {
|
||||
WrBridge()->SendDeleteImage(key);
|
||||
}
|
||||
}
|
||||
mImageKeys.clear();
|
||||
mImageKeysToDelete.clear();
|
||||
}
|
||||
|
||||
void
|
||||
@ -666,7 +666,7 @@ WebRenderLayerManager::DiscardLocalImages()
|
||||
// Removes images but doesn't tell the parent side about them
|
||||
// This is useful in empty / failed transactions where we created
|
||||
// image keys but didn't tell the parent about them yet.
|
||||
mImageKeys.clear();
|
||||
mImageKeysToDelete.clear();
|
||||
}
|
||||
|
||||
void
|
||||
@ -764,6 +764,7 @@ WebRenderLayerManager::ClearCachedResources(Layer* aSubtree)
|
||||
} else if (mRoot) {
|
||||
ClearLayer(mRoot);
|
||||
}
|
||||
DiscardImages();
|
||||
WrBridge()->EndClearCachedResources();
|
||||
}
|
||||
|
||||
|
@ -214,7 +214,7 @@ private:
|
||||
|
||||
private:
|
||||
nsIWidget* MOZ_NON_OWNING_REF mWidget;
|
||||
std::vector<wr::ImageKey> mImageKeys;
|
||||
std::vector<wr::ImageKey> mImageKeysToDelete;
|
||||
nsTArray<uint64_t> mDiscardedCompositorAnimationsIds;
|
||||
|
||||
/* PaintedLayer callbacks; valid at the end of a transaciton,
|
||||
|
Loading…
x
Reference in New Issue
Block a user