diff --git a/dom/ipc/TabChild.cpp b/dom/ipc/TabChild.cpp index c6d6d0699d1f..c7f809c96892 100644 --- a/dom/ipc/TabChild.cpp +++ b/dom/ipc/TabChild.cpp @@ -3228,6 +3228,9 @@ TabChild::ReinitRendering() gfx::VRManagerChild::IdentifyTextureHost(mTextureFactoryIdentifier); InitAPZState(); + RefPtr lm = mPuppetWidget->GetLayerManager(); + MOZ_ASSERT(lm); + lm->SetLayerObserverEpoch(mLayerObserverEpoch); nsCOMPtr doc(GetDocument()); doc->NotifyLayerManagerRecreated(); diff --git a/gfx/layers/wr/WebRenderBridgeParent.cpp b/gfx/layers/wr/WebRenderBridgeParent.cpp index 760dad746e90..6c87c360435c 100644 --- a/gfx/layers/wr/WebRenderBridgeParent.cpp +++ b/gfx/layers/wr/WebRenderBridgeParent.cpp @@ -682,10 +682,6 @@ WebRenderBridgeParent::RecvSetDisplayList(const gfx::IntSize& aSize, // build is done, so we don't need to do it here. ScheduleGenerateFrame(); } - - if (ShouldParentObserveEpoch()) { - mCompositorBridge->ObserveLayerUpdate(GetLayersId(), GetChildLayerObserverEpoch(), true); - } } HoldPendingTransactionId(wrEpoch, aTransactionId, aTxnStartTime, aFwdTime); @@ -697,6 +693,10 @@ WebRenderBridgeParent::RecvSetDisplayList(const gfx::IntSize& aSize, mCompositorBridge->DidComposite(GetLayersId(), now, now); } + if (ShouldParentObserveEpoch()) { + mCompositorBridge->ObserveLayerUpdate(GetLayersId(), GetChildLayerObserverEpoch(), true); + } + wr::IpcResourceUpdateQueue::ReleaseShmems(this, aSmallShmems); wr::IpcResourceUpdateQueue::ReleaseShmems(this, aLargeShmems); return IPC_OK(); @@ -771,6 +771,10 @@ WebRenderBridgeParent::RecvEmptyTransaction(const FocusTarget& aFocusTarget, mCompositorBridge->DidComposite(GetLayersId(), now, now); } + if (ShouldParentObserveEpoch()) { + mCompositorBridge->ObserveLayerUpdate(GetLayersId(), GetChildLayerObserverEpoch(), true); + } + return IPC_OK(); }