зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1342754 - Make WebRenderBridgeChild::mIdNamespace unique r=jrmuizel
This commit is contained in:
Родитель
d489fa0451
Коммит
712d4c80f9
|
@ -1132,7 +1132,7 @@ CompositorBridgeChild::HandleFatalError(const char* aName, const char* aMsg) con
|
|||
PWebRenderBridgeChild*
|
||||
CompositorBridgeChild::AllocPWebRenderBridgeChild(const wr::PipelineId& aPipelineId, TextureFactoryIdentifier*, uint32_t *aIdNamespace)
|
||||
{
|
||||
WebRenderBridgeChild* child = new WebRenderBridgeChild(aPipelineId, *aIdNamespace);
|
||||
WebRenderBridgeChild* child = new WebRenderBridgeChild(aPipelineId);
|
||||
child->AddIPDLReference();
|
||||
return child;
|
||||
}
|
||||
|
|
|
@ -1591,8 +1591,8 @@ CompositorBridgeParent::AllocPWebRenderBridgeParent(const wr::PipelineId& aPipel
|
|||
RefPtr<WebRenderCompositableHolder> holder = new WebRenderCompositableHolder();
|
||||
MOZ_ASSERT(api); // TODO have a fallback
|
||||
api->SetRootPipeline(aPipelineId);
|
||||
*aIdNamespace = api->GetNamespace().mHandle;
|
||||
mWrBridge = new WebRenderBridgeParent(this, aPipelineId, mWidget, nullptr, Move(api), Move(holder));
|
||||
*aIdNamespace = mWrBridge->GetIdNameSpace();
|
||||
|
||||
mCompositorScheduler = mWrBridge->CompositorScheduler();
|
||||
MOZ_ASSERT(mCompositorScheduler);
|
||||
|
|
|
@ -228,7 +228,8 @@ CrossProcessCompositorBridgeParent::AllocPWebRenderBridgeParent(const wr::Pipeli
|
|||
sIndirectLayerTrees[pipelineHandle].mCrossProcessParent = this;
|
||||
sIndirectLayerTrees[pipelineHandle].mWrBridge = parent;
|
||||
*aTextureFactoryIdentifier = parent->GetTextureFactoryIdentifier();
|
||||
*aIdNamespace = api->GetNamespace().mHandle;
|
||||
*aIdNamespace = parent->GetIdNameSpace();
|
||||
|
||||
return parent;
|
||||
}
|
||||
|
||||
|
|
|
@ -15,9 +15,9 @@
|
|||
namespace mozilla {
|
||||
namespace layers {
|
||||
|
||||
WebRenderBridgeChild::WebRenderBridgeChild(const wr::PipelineId& aPipelineId, uint32_t aIdNamespace)
|
||||
WebRenderBridgeChild::WebRenderBridgeChild(const wr::PipelineId& aPipelineId)
|
||||
: mIsInTransaction(false)
|
||||
, mIdNamespace(aIdNamespace)
|
||||
, mIdNamespace(0)
|
||||
, mResourceId(0)
|
||||
, mIPCOpen(false)
|
||||
, mDestroyed(false)
|
||||
|
|
|
@ -28,7 +28,7 @@ class WebRenderBridgeChild final : public PWebRenderBridgeChild
|
|||
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(WebRenderBridgeChild, override)
|
||||
|
||||
public:
|
||||
explicit WebRenderBridgeChild(const wr::PipelineId& aPipelineId, uint32_t aIdNamespace);
|
||||
explicit WebRenderBridgeChild(const wr::PipelineId& aPipelineId);
|
||||
|
||||
void AddWebRenderCommand(const WebRenderCommand& aCmd);
|
||||
void AddWebRenderCommands(const nsTArray<WebRenderCommand>& aCommands);
|
||||
|
@ -56,6 +56,10 @@ public:
|
|||
|
||||
uint32_t GetNextResourceId() { return ++mResourceId; }
|
||||
uint32_t GetNamespace() { return mIdNamespace; }
|
||||
void SetNamespace(uint32_t aIdNamespace)
|
||||
{
|
||||
mIdNamespace = aIdNamespace;
|
||||
}
|
||||
|
||||
private:
|
||||
friend class CompositorBridgeChild;
|
||||
|
|
|
@ -75,6 +75,8 @@ private:
|
|||
InfallibleTArray<OpDestroy>* mActorsToDestroy;
|
||||
};
|
||||
|
||||
/* static */ uint32_t WebRenderBridgeParent::sIdNameSpace = 0;
|
||||
|
||||
WebRenderBridgeParent::WebRenderBridgeParent(CompositorBridgeParentBase* aCompositorBridge,
|
||||
const wr::PipelineId& aPipelineId,
|
||||
widget::CompositorWidget* aWidget,
|
||||
|
@ -91,6 +93,7 @@ WebRenderBridgeParent::WebRenderBridgeParent(CompositorBridgeParentBase* aCompos
|
|||
, mChildLayerObserverEpoch(0)
|
||||
, mParentLayerObserverEpoch(0)
|
||||
, mWrEpoch(0)
|
||||
, mIdNameSpace(++sIdNameSpace)
|
||||
, mDestroyed(false)
|
||||
{
|
||||
MOZ_ASSERT(mCompositableHolder);
|
||||
|
|
|
@ -133,6 +133,11 @@ public:
|
|||
aNotifications->AppendElements(Move(mImageCompositeNotifications));
|
||||
}
|
||||
|
||||
uint32_t GetIdNameSpace()
|
||||
{
|
||||
return mIdNameSpace;
|
||||
}
|
||||
|
||||
private:
|
||||
virtual ~WebRenderBridgeParent();
|
||||
|
||||
|
@ -178,8 +183,11 @@ private:
|
|||
|
||||
std::queue<PendingTransactionId> mPendingTransactionIds;
|
||||
uint32_t mWrEpoch;
|
||||
uint32_t mIdNameSpace;
|
||||
|
||||
bool mDestroyed;
|
||||
|
||||
static uint32_t sIdNameSpace;
|
||||
};
|
||||
|
||||
} // namespace layers
|
||||
|
|
|
@ -228,6 +228,7 @@ WebRenderLayerManager::Initialize(PCompositorBridgeChild* aCBChild,
|
|||
LayoutDeviceIntSize size = mWidget->GetClientSize();
|
||||
WrBridge()->SendCreate(size.ToUnknownSize());
|
||||
WrBridge()->IdentifyTextureHost(textureFactoryIdentifier);
|
||||
WrBridge()->SetNamespace(id_namespace);
|
||||
*aTextureFactoryIdentifier = textureFactoryIdentifier;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче