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