зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1472600 - Update SyncHandle when Tab is moved between windows r=nical
This commit is contained in:
Родитель
c367b58df7
Коммит
6bfc2aa91f
|
@ -1802,7 +1802,8 @@ CompositorBridgeParent::RecvAdoptChild(const LayersId& child)
|
|||
childWrBridge->UpdateWebRender(mWrBridge->CompositorScheduler(),
|
||||
api,
|
||||
mWrBridge->AsyncImageManager(),
|
||||
GetAnimationStorage());
|
||||
GetAnimationStorage(),
|
||||
mWrBridge->GetTextureFactoryIdentifier());
|
||||
// Pretend we composited, since parent CompositorBridgeParent was replaced.
|
||||
if (cpcp) {
|
||||
TimeStamp now = TimeStamp::Now();
|
||||
|
|
|
@ -17,6 +17,7 @@ include protocol PTexture;
|
|||
using mozilla::layers::APZTestData from "mozilla/layers/APZTestData.h";
|
||||
using mozilla::layers::ScrollUpdatesMap from "FrameMetrics.h";
|
||||
using struct mozilla::layers::ScrollableLayerGuid from "FrameMetrics.h";
|
||||
using struct mozilla::layers::TextureFactoryIdentifier from "mozilla/layers/CompositorTypes.h";
|
||||
using struct mozilla::layers::TextureInfo from "mozilla/layers/CompositorTypes.h";
|
||||
using mozilla::layers::CompositableHandle from "mozilla/layers/LayersTypes.h";
|
||||
using mozilla::wr::BuiltDisplayListDescriptor from "mozilla/webrender/webrender_ffi.h";
|
||||
|
@ -79,7 +80,7 @@ parent:
|
|||
async Shutdown();
|
||||
sync ShutdownSync();
|
||||
child:
|
||||
async WrUpdated(IdNamespace aNewIdNamespace);
|
||||
async WrUpdated(IdNamespace aNewIdNamespace, TextureFactoryIdentifier textureFactoryIdentifier);
|
||||
async __delete__();
|
||||
};
|
||||
|
||||
|
|
|
@ -542,11 +542,13 @@ WebRenderBridgeChild::InForwarderThread()
|
|||
}
|
||||
|
||||
mozilla::ipc::IPCResult
|
||||
WebRenderBridgeChild::RecvWrUpdated(const wr::IdNamespace& aNewIdNamespace)
|
||||
WebRenderBridgeChild::RecvWrUpdated(const wr::IdNamespace& aNewIdNamespace,
|
||||
const TextureFactoryIdentifier& textureFactoryIdentifier)
|
||||
{
|
||||
if (mManager) {
|
||||
mManager->WrUpdated();
|
||||
}
|
||||
IdentifyTextureHost(textureFactoryIdentifier);
|
||||
// Update mIdNamespace to identify obsolete keys and messages by WebRenderBridgeParent.
|
||||
// Since usage of invalid keys could cause crash in webrender.
|
||||
mIdNamespace = aNewIdNamespace;
|
||||
|
|
|
@ -200,7 +200,8 @@ private:
|
|||
|
||||
void DoDestroy();
|
||||
|
||||
mozilla::ipc::IPCResult RecvWrUpdated(const wr::IdNamespace& aNewIdNamespace) override;
|
||||
mozilla::ipc::IPCResult RecvWrUpdated(const wr::IdNamespace& aNewIdNamespace,
|
||||
const TextureFactoryIdentifier& textureFactoryIdentifier) override;
|
||||
|
||||
void AddIPDLReference() {
|
||||
MOZ_ASSERT(mIPCOpen == false);
|
||||
|
|
|
@ -1121,7 +1121,8 @@ void
|
|||
WebRenderBridgeParent::UpdateWebRender(CompositorVsyncScheduler* aScheduler,
|
||||
wr::WebRenderAPI* aApi,
|
||||
AsyncImagePipelineManager* aImageMgr,
|
||||
CompositorAnimationStorage* aAnimStorage)
|
||||
CompositorAnimationStorage* aAnimStorage,
|
||||
const TextureFactoryIdentifier& aTextureFactoryIdentifier)
|
||||
{
|
||||
MOZ_ASSERT(!mWidget);
|
||||
MOZ_ASSERT(aScheduler);
|
||||
|
@ -1144,7 +1145,7 @@ WebRenderBridgeParent::UpdateWebRender(CompositorVsyncScheduler* aScheduler,
|
|||
// after new layers/webrender keys allocation.
|
||||
// Without client side's layout refactoring, we could not finish all old layers/webrender keys removals
|
||||
// before new layer/webrender keys allocation. In future, we could address the problem.
|
||||
Unused << SendWrUpdated(mIdNamespace);
|
||||
Unused << SendWrUpdated(mIdNamespace, aTextureFactoryIdentifier);
|
||||
CompositorBridgeParentBase* cBridge = mCompositorBridge;
|
||||
// XXX Stop to clear resources if webreder supports resources sharing between different webrender instances.
|
||||
ClearResources();
|
||||
|
|
|
@ -184,7 +184,8 @@ public:
|
|||
void UpdateWebRender(CompositorVsyncScheduler* aScheduler,
|
||||
wr::WebRenderAPI* aApi,
|
||||
AsyncImagePipelineManager* aImageMgr,
|
||||
CompositorAnimationStorage* aAnimStorage);
|
||||
CompositorAnimationStorage* aAnimStorage,
|
||||
const TextureFactoryIdentifier& aTextureFactoryIdentifier);
|
||||
|
||||
void RemoveEpochDataPriorTo(const wr::Epoch& aRenderedEpoch);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче