Bug 1404232 - Add WebRenderLayerManager::WrUpdated() r=jrmuizel
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
#include "mozilla/layers/IpcResourceUpdateQueue.h"
|
||||
#include "mozilla/layers/StackingContextHelper.h"
|
||||
#include "mozilla/layers/PTextureChild.h"
|
||||
#include "mozilla/layers/WebRenderLayerManager.h"
|
||||
#include "mozilla/webrender/WebRenderAPI.h"
|
||||
|
||||
namespace mozilla {
|
||||
@@ -27,6 +28,7 @@ WebRenderBridgeChild::WebRenderBridgeChild(const wr::PipelineId& aPipelineId)
|
||||
, mIdNamespace{0}
|
||||
, mResourceId(0)
|
||||
, mPipelineId(aPipelineId)
|
||||
, mManager(nullptr)
|
||||
, mIPCOpen(false)
|
||||
, mDestroyed(false)
|
||||
, mFontKeysDeleted(0)
|
||||
@@ -43,6 +45,7 @@ WebRenderBridgeChild::Destroy(bool aIsSync)
|
||||
// mDestroyed is used to prevent calling Send__delete__() twice.
|
||||
// When this function is called from CompositorBridgeChild::Destroy().
|
||||
mDestroyed = true;
|
||||
mManager = nullptr;
|
||||
|
||||
if (aIsSync) {
|
||||
SendShutdownSync();
|
||||
@@ -55,6 +58,7 @@ void
|
||||
WebRenderBridgeChild::ActorDestroy(ActorDestroyReason why)
|
||||
{
|
||||
mDestroyed = true;
|
||||
mManager = nullptr;
|
||||
}
|
||||
|
||||
void
|
||||
@@ -526,13 +530,15 @@ WebRenderBridgeChild::InForwarderThread()
|
||||
mozilla::ipc::IPCResult
|
||||
WebRenderBridgeChild::RecvWrUpdated(const wr::IdNamespace& aNewIdNamespace)
|
||||
{
|
||||
if (mManager) {
|
||||
mManager->WrUpdated();
|
||||
}
|
||||
// Update mIdNamespace to identify obsolete keys and messages by WebRenderBridgeParent.
|
||||
// Since usage of invalid keys could cause crash in webrender.
|
||||
mIdNamespace = aNewIdNamespace;
|
||||
// Just clear FontInstaceKeys/FontKeys, they are removed during WebRenderAPI destruction.
|
||||
mFontInstanceKeys.Clear();
|
||||
mFontKeys.Clear();
|
||||
GetCompositorBridgeChild()->RecvInvalidateLayers(wr::AsUint64(mPipelineId));
|
||||
return IPC_OK();
|
||||
}
|
||||
|
||||
@@ -554,6 +560,13 @@ WebRenderBridgeChild::EndClearCachedResources()
|
||||
mIsInClearCachedResources = false;
|
||||
}
|
||||
|
||||
void
|
||||
WebRenderBridgeChild::SetWebRenderLayerManager(WebRenderLayerManager* aManager)
|
||||
{
|
||||
MOZ_ASSERT(aManager);
|
||||
mManager = aManager;
|
||||
}
|
||||
|
||||
ipc::IShmemAllocator*
|
||||
WebRenderBridgeChild::GetShmemAllocator()
|
||||
{
|
||||
|
||||
@@ -28,6 +28,7 @@ class CompositableClient;
|
||||
class CompositorBridgeChild;
|
||||
class StackingContextHelper;
|
||||
class TextureForwarder;
|
||||
class WebRenderLayerManager;
|
||||
|
||||
template<class T>
|
||||
class ThreadSafeWeakPtrHashKey : public PLDHashEntryHdr
|
||||
@@ -141,6 +142,8 @@ public:
|
||||
void BeginClearCachedResources();
|
||||
void EndClearCachedResources();
|
||||
|
||||
void SetWebRenderLayerManager(WebRenderLayerManager* aManager);
|
||||
|
||||
ipc::IShmemAllocator* GetShmemAllocator();
|
||||
|
||||
private:
|
||||
@@ -199,6 +202,7 @@ private:
|
||||
wr::IdNamespace mIdNamespace;
|
||||
uint32_t mResourceId;
|
||||
wr::PipelineId mPipelineId;
|
||||
WebRenderLayerManager* mManager;
|
||||
|
||||
bool mIPCOpen;
|
||||
bool mDestroyed;
|
||||
|
||||
@@ -70,6 +70,7 @@ WebRenderLayerManager::Initialize(PCompositorBridgeChild* aCBChild,
|
||||
}
|
||||
|
||||
mWrChild = static_cast<WebRenderBridgeChild*>(bridge);
|
||||
WrBridge()->SetWebRenderLayerManager(this);
|
||||
WrBridge()->SendCreate(size.ToUnknownSize());
|
||||
WrBridge()->IdentifyTextureHost(textureFactoryIdentifier);
|
||||
WrBridge()->SetNamespace(id_namespace);
|
||||
@@ -536,6 +537,12 @@ WebRenderLayerManager::ClearCachedResources(Layer* aSubtree)
|
||||
WrBridge()->EndClearCachedResources();
|
||||
}
|
||||
|
||||
void
|
||||
WebRenderLayerManager::WrUpdated()
|
||||
{
|
||||
// Handle removing all obsoleted WebRenderUserData
|
||||
}
|
||||
|
||||
void
|
||||
WebRenderLayerManager::UpdateTextureFactoryIdentifier(const TextureFactoryIdentifier& aNewIdentifier,
|
||||
uint64_t aDeviceResetSeqNo)
|
||||
|
||||
@@ -155,6 +155,8 @@ public:
|
||||
WebRenderUserDataRefTable* GetWebRenderUserDataTable() { return mWebRenderCommandBuilder.GetWebRenderUserDataTable(); }
|
||||
WebRenderScrollData& GetScrollData() { return mScrollData; }
|
||||
|
||||
void WrUpdated();
|
||||
|
||||
private:
|
||||
/**
|
||||
* Take a snapshot of the parent context, and copy
|
||||
|
||||
Reference in New Issue
Block a user