From 944e8cc055a0a66ae5ba91ba6d1056b62720d9e8 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Wed, 4 Jan 2017 10:19:30 -0500 Subject: [PATCH] Use async compositable IDs for image composite notifications. (bug 1325784 part 4, r=nical) --- gfx/layers/ImageContainer.cpp | 2 +- gfx/layers/ImageContainer.h | 4 +- gfx/layers/client/CompositableChild.cpp | 9 +++-- gfx/layers/client/CompositableChild.h | 9 ++++- gfx/layers/composite/CompositableHost.cpp | 14 ++----- gfx/layers/composite/CompositableHost.h | 27 +++++++++----- gfx/layers/composite/ImageHost.cpp | 27 ++++---------- gfx/layers/composite/ImageHost.h | 4 -- gfx/layers/composite/LayerManagerComposite.h | 14 +++++-- gfx/layers/ipc/CompositorBridgeParent.cpp | 2 +- gfx/layers/ipc/ImageBridgeChild.cpp | 27 +++++++------- gfx/layers/ipc/ImageBridgeChild.h | 8 +++- gfx/layers/ipc/ImageBridgeParent.cpp | 39 +++++++++++--------- gfx/layers/ipc/ImageBridgeParent.h | 7 ++-- gfx/layers/ipc/ImageContainerChild.cpp | 2 +- gfx/layers/ipc/ImageContainerParent.cpp | 3 -- gfx/layers/ipc/LayerTransactionParent.cpp | 2 +- gfx/layers/ipc/LayersMessages.ipdlh | 2 +- gfx/layers/ipc/PImageBridge.ipdl | 4 +- 19 files changed, 104 insertions(+), 102 deletions(-) diff --git a/gfx/layers/ImageContainer.cpp b/gfx/layers/ImageContainer.cpp index 995d6f0c0d1c..47fb53fa07d1 100644 --- a/gfx/layers/ImageContainer.cpp +++ b/gfx/layers/ImageContainer.cpp @@ -360,7 +360,7 @@ ImageContainer::GetCurrentSize() } void -ImageContainer::NotifyCompositeInternal(const ImageCompositeNotification& aNotification) +ImageContainer::NotifyComposite(const ImageCompositeNotification& aNotification) { ReentrantMonitorAutoEnter mon(mReentrantMonitor); diff --git a/gfx/layers/ImageContainer.h b/gfx/layers/ImageContainer.h index c0318d13f8b7..13a402e6ea16 100644 --- a/gfx/layers/ImageContainer.h +++ b/gfx/layers/ImageContainer.h @@ -562,6 +562,8 @@ public: return mDroppedImageCount; } + void NotifyComposite(const ImageCompositeNotification& aNotification); + PImageContainerChild* GetPImageContainerChild(); /** @@ -585,8 +587,6 @@ private: void EnsureImageClient(bool aCreate); - void NotifyCompositeInternal(const ImageCompositeNotification& aNotification); - // ReentrantMonitor to protect thread safe access to the "current // image", and any other state which is shared between threads. ReentrantMonitor mReentrantMonitor; diff --git a/gfx/layers/client/CompositableChild.cpp b/gfx/layers/client/CompositableChild.cpp index acbd09365e98..379cd1b7b283 100644 --- a/gfx/layers/client/CompositableChild.cpp +++ b/gfx/layers/client/CompositableChild.cpp @@ -71,15 +71,16 @@ CompositableChild::ActorDestroy(ActorDestroyReason) } /* static */ PCompositableChild* -AsyncCompositableChild::CreateActor() +AsyncCompositableChild::CreateActor(uint64_t aAsyncID) { - AsyncCompositableChild* child = new AsyncCompositableChild(); + AsyncCompositableChild* child = new AsyncCompositableChild(aAsyncID); child->AddRef(); return child; } -AsyncCompositableChild::AsyncCompositableChild() - : mLock("AsyncCompositableChild.mLock") +AsyncCompositableChild::AsyncCompositableChild(uint64_t aAsyncID) + : mLock("AsyncCompositableChild.mLock"), + mAsyncID(aAsyncID) { } diff --git a/gfx/layers/client/CompositableChild.h b/gfx/layers/client/CompositableChild.h index 728e3ac98fa5..9635b997bae6 100644 --- a/gfx/layers/client/CompositableChild.h +++ b/gfx/layers/client/CompositableChild.h @@ -61,7 +61,7 @@ protected: class AsyncCompositableChild final : public CompositableChild { public: - static PCompositableChild* CreateActor(); + static PCompositableChild* CreateActor(uint64_t aAsyncID); void RevokeCompositableClient() override; RefPtr GetCompositableClient() override; @@ -72,12 +72,17 @@ public: return this; } + uint64_t GetAsyncID() const { + return mAsyncID; + } + protected: - AsyncCompositableChild(); + explicit AsyncCompositableChild(uint64_t aAsyncID); ~AsyncCompositableChild() override; private: Mutex mLock; + uint64_t mAsyncID; }; } // namespace layers diff --git a/gfx/layers/composite/CompositableHost.cpp b/gfx/layers/composite/CompositableHost.cpp index 1db7379daf3a..eac21395aaed 100644 --- a/gfx/layers/composite/CompositableHost.cpp +++ b/gfx/layers/composite/CompositableHost.cpp @@ -40,16 +40,10 @@ class Compositor; class CompositableParent : public ParentActor { public: - CompositableParent(CompositableParentManager* aMgr, - const TextureInfo& aTextureInfo, - PImageContainerParent* aImageContainer = nullptr) + CompositableParent(CompositableParentManager* aMgr, const TextureInfo& aTextureInfo) { MOZ_COUNT_CTOR(CompositableParent); mHost = CompositableHost::Create(aTextureInfo); - if (aImageContainer) { - mHost->SetImageContainer( - static_cast(aImageContainer)); - } } ~CompositableParent() @@ -69,7 +63,6 @@ public: CompositableHost::CompositableHost(const TextureInfo& aTextureInfo) : mTextureInfo(aTextureInfo) - , mAsyncID(0) , mCompositorID(0) , mCompositor(nullptr) , mLayer(nullptr) @@ -87,10 +80,9 @@ CompositableHost::~CompositableHost() PCompositableParent* CompositableHost::CreateIPDLActor(CompositableParentManager* aMgr, - const TextureInfo& aTextureInfo, - PImageContainerParent* aImageContainer) + const TextureInfo& aTextureInfo) { - return new CompositableParent(aMgr, aTextureInfo, aImageContainer); + return new CompositableParent(aMgr, aTextureInfo); } bool diff --git a/gfx/layers/composite/CompositableHost.h b/gfx/layers/composite/CompositableHost.h index 8dfdc2bda8a2..edde29c063c8 100644 --- a/gfx/layers/composite/CompositableHost.h +++ b/gfx/layers/composite/CompositableHost.h @@ -40,13 +40,26 @@ namespace layers { class Layer; class LayerComposite; class Compositor; -class ImageContainerParent; class ThebesBufferData; class TiledContentHost; class CompositableParentManager; class PCompositableParent; struct EffectChain; +struct AsyncCompositableRef +{ + AsyncCompositableRef() + : mProcessId(mozilla::ipc::kInvalidProcessId), + mAsyncId(0) + {} + AsyncCompositableRef(base::ProcessId aProcessId, uint64_t aAsyncId) + : mProcessId(aProcessId), mAsyncId(aAsyncId) + {} + explicit operator bool() const { return !!mAsyncId; } + base::ProcessId mProcessId; + uint64_t mAsyncId; +}; + /** * The compositor-side counterpart to CompositableClient. Responsible for * updating textures and data about textures from IPC and how textures are @@ -135,8 +148,6 @@ public: Layer* GetLayer() const { return mLayer; } void SetLayer(Layer* aLayer) { mLayer = aLayer; } - virtual void SetImageContainer(ImageContainerParent* aImageContainer) {} - virtual TiledContentHost* AsTiledContentHost() { return nullptr; } typedef uint32_t AttachFlags; @@ -212,8 +223,7 @@ public: static PCompositableParent* CreateIPDLActor(CompositableParentManager* mgr, - const TextureInfo& textureInfo, - PImageContainerParent* aImageContainer = nullptr); + const TextureInfo& textureInfo); static bool DestroyIPDLActor(PCompositableParent* actor); @@ -221,12 +231,11 @@ public: uint64_t GetCompositorID() const { return mCompositorID; } - uint64_t GetAsyncID() const { return mAsyncID; } + const AsyncCompositableRef& GetAsyncRef() const { return mAsyncRef; } + void SetAsyncRef(const AsyncCompositableRef& aRef) { mAsyncRef = aRef; } void SetCompositorID(uint64_t aID) { mCompositorID = aID; } - void SetAsyncID(uint64_t aID) { mAsyncID = aID; } - virtual bool Lock() { return false; } virtual void Unlock() { } @@ -242,7 +251,7 @@ public: protected: TextureInfo mTextureInfo; - uint64_t mAsyncID; + AsyncCompositableRef mAsyncRef; uint64_t mCompositorID; RefPtr mCompositor; Layer* mLayer; diff --git a/gfx/layers/composite/ImageHost.cpp b/gfx/layers/composite/ImageHost.cpp index f7383c0eba3e..bf3f54a1243d 100644 --- a/gfx/layers/composite/ImageHost.cpp +++ b/gfx/layers/composite/ImageHost.cpp @@ -29,7 +29,6 @@ class ISurfaceAllocator; ImageHost::ImageHost(const TextureInfo& aTextureInfo) : CompositableHost(aTextureInfo) - , mImageContainer(nullptr) , mLastFrameID(-1) , mLastProducerID(-1) , mBias(BIAS_NONE) @@ -38,7 +37,6 @@ ImageHost::ImageHost(const TextureInfo& aTextureInfo) ImageHost::~ImageHost() { - SetImageContainer(nullptr); } void @@ -349,12 +347,15 @@ ImageHost::Composite(LayerComposite* aLayer, } if (mLastFrameID != img->mFrameID || mLastProducerID != img->mProducerID) { - if (mImageContainer) { + if (mAsyncRef) { + ImageCompositeNotificationInfo info; + info.mImageBridgeProcessId = mAsyncRef.mProcessId; + info.mNotification = ImageCompositeNotification( + mAsyncRef.mAsyncId, + img->mTimeStamp, GetCompositor()->GetCompositionTime(), + img->mFrameID, img->mProducerID); static_cast(aLayer->GetLayerManager())-> - AppendImageCompositeNotification(ImageCompositeNotification( - mImageContainer, nullptr, - img->mTimeStamp, GetCompositor()->GetCompositionTime(), - img->mFrameID, img->mProducerID)); + AppendImageCompositeNotification(info); } mLastFrameID = img->mFrameID; mLastProducerID = img->mProducerID; @@ -578,17 +579,5 @@ ImageHost::GenEffect(const gfx::SamplingFilter aSamplingFilter) GetRenderState()); } -void -ImageHost::SetImageContainer(ImageContainerParent* aImageContainer) -{ - if (mImageContainer) { - mImageContainer->mImageHosts.RemoveElement(this); - } - mImageContainer = aImageContainer; - if (mImageContainer) { - mImageContainer->mImageHosts.AppendElement(this); - } -} - } // namespace layers } // namespace mozilla diff --git a/gfx/layers/composite/ImageHost.h b/gfx/layers/composite/ImageHost.h index 323b75f19f4d..af9de138c4d7 100644 --- a/gfx/layers/composite/ImageHost.h +++ b/gfx/layers/composite/ImageHost.h @@ -67,8 +67,6 @@ public: virtual void SetCompositor(Compositor* aCompositor) override; - virtual void SetImageContainer(ImageContainerParent* aImageContainer) override; - gfx::IntSize GetImageSize() const override; virtual LayerRenderState GetRenderState() override; @@ -147,8 +145,6 @@ protected: int ChooseImageIndex() const; nsTArray mImages; - // Weak reference, will be null if mImageContainer has been destroyed. - ImageContainerParent* mImageContainer; int32_t mLastFrameID; int32_t mLastProducerID; /** diff --git a/gfx/layers/composite/LayerManagerComposite.h b/gfx/layers/composite/LayerManagerComposite.h index f9ce931591b8..0aca620d2d0c 100644 --- a/gfx/layers/composite/LayerManagerComposite.h +++ b/gfx/layers/composite/LayerManagerComposite.h @@ -65,6 +65,11 @@ class PaintCounter; static const int kVisualWarningDuration = 150; // ms +struct ImageCompositeNotificationInfo { + base::ProcessId mImageBridgeProcessId; + ImageCompositeNotification mNotification; +}; + // An implementation of LayerManager that acts as a pair with ClientLayerManager // and is mirrored across IPDL. This gets managed/updated by LayerTransactionParent. class HostLayerManager : public LayerManager @@ -128,7 +133,7 @@ public: // layer or texture updates against the old compositor. virtual void ChangeCompositor(Compositor* aNewCompositor) = 0; - void ExtractImageCompositeNotifications(nsTArray* aNotifications) + void ExtractImageCompositeNotifications(nsTArray* aNotifications) { aNotifications->AppendElements(Move(mImageCompositeNotifications)); } @@ -165,7 +170,7 @@ public: protected: bool mDebugOverlayWantsNextFrame; - nsTArray mImageCompositeNotifications; + nsTArray mImageCompositeNotifications; // Testing property. If hardware composer is supported, this will return // true if the last frame was deemed 'too complicated' to be rendered. float mWarningLevel; @@ -346,7 +351,8 @@ public: bool AsyncPanZoomEnabled() const override; - void AppendImageCompositeNotification(const ImageCompositeNotification& aNotification) +public: + void AppendImageCompositeNotification(const ImageCompositeNotificationInfo& aNotification) { // Only send composite notifications when we're drawing to the screen, // because that's what they mean. @@ -357,6 +363,8 @@ public: mImageCompositeNotifications.AppendElement(aNotification); } } + +public: virtual TextureFactoryIdentifier GetTextureFactoryIdentifier() override { return mCompositor->GetTextureFactoryIdentifier(); diff --git a/gfx/layers/ipc/CompositorBridgeParent.cpp b/gfx/layers/ipc/CompositorBridgeParent.cpp index 155a74e23928..5898808ec793 100644 --- a/gfx/layers/ipc/CompositorBridgeParent.cpp +++ b/gfx/layers/ipc/CompositorBridgeParent.cpp @@ -1724,7 +1724,7 @@ CompositorBridgeParent::DidComposite(TimeStamp& aCompositeStart, mPendingTransaction = 0; if (mLayerManager) { - nsTArray notifications; + nsTArray notifications; mLayerManager->ExtractImageCompositeNotifications(¬ifications); if (!notifications.IsEmpty()) { Unused << ImageBridgeParent::NotifyImageComposites(notifications); diff --git a/gfx/layers/ipc/ImageBridgeChild.cpp b/gfx/layers/ipc/ImageBridgeChild.cpp index e91e3e5781d0..0a75d7fce32b 100644 --- a/gfx/layers/ipc/ImageBridgeChild.cpp +++ b/gfx/layers/ipc/ImageBridgeChild.cpp @@ -383,14 +383,11 @@ ImageBridgeChild::Connect(CompositableClient* aCompositable, static uint64_t sNextID = 1; uint64_t id = sNextID++; - PImageContainerChild* imageContainerChild = nullptr; - if (aImageContainer) - imageContainerChild = aImageContainer->GetPImageContainerChild(); + MOZ_ASSERT(!mImageContainers.Contains(id)); + mImageContainers.Put(id, aImageContainer); PCompositableChild* child = - SendPCompositableConstructor(aCompositable->GetTextureInfo(), - id, - imageContainerChild); + SendPCompositableConstructor(aCompositable->GetTextureInfo(), id); if (!child) { return; } @@ -398,17 +395,20 @@ ImageBridgeChild::Connect(CompositableClient* aCompositable, } PCompositableChild* -ImageBridgeChild::AllocPCompositableChild(const TextureInfo& aInfo, - const uint64_t& aID, - PImageContainerChild* aChild) +ImageBridgeChild::AllocPCompositableChild(const TextureInfo& aInfo, const uint64_t& aID) { MOZ_ASSERT(CanSend()); - return AsyncCompositableChild::CreateActor(); + return AsyncCompositableChild::CreateActor(aID); } bool ImageBridgeChild::DeallocPCompositableChild(PCompositableChild* aActor) { + AsyncCompositableChild* actor = static_cast(aActor); + MOZ_ASSERT(actor->GetAsyncID()); + + mImageContainers.Remove(actor->GetAsyncID()); + AsyncCompositableChild::DestroyActor(aActor); return true; } @@ -1135,10 +1135,9 @@ mozilla::ipc::IPCResult ImageBridgeChild::RecvDidComposite(InfallibleTArray&& aNotifications) { for (auto& n : aNotifications) { - ImageContainerChild* child = - static_cast(n.imageContainerChild()); - if (child) { - child->NotifyComposite(n); + RefPtr imageContainer = mImageContainers.Get(n.asyncCompositableID()); + if (imageContainer) { + imageContainer->NotifyComposite(n); } } return IPC_OK(); diff --git a/gfx/layers/ipc/ImageBridgeChild.h b/gfx/layers/ipc/ImageBridgeChild.h index 6a3e610c88a1..22e6cec44144 100644 --- a/gfx/layers/ipc/ImageBridgeChild.h +++ b/gfx/layers/ipc/ImageBridgeChild.h @@ -170,8 +170,7 @@ public: virtual base::ProcessId GetParentPid() const override { return OtherPid(); } PCompositableChild* AllocPCompositableChild(const TextureInfo& aInfo, - const uint64_t& aID, - PImageContainerChild* aChild) override; + const uint64_t& aID) override; bool DeallocPCompositableChild(PCompositableChild* aActor) override; virtual PTextureChild* @@ -393,6 +392,11 @@ private: * It defer calling of TextureClient recycle callback. */ nsDataHashtable > mTexturesWaitingRecycled; + + /** + * Mapping from async compositable IDs to image containers. + */ + nsDataHashtable> mImageContainers; }; } // namespace layers diff --git a/gfx/layers/ipc/ImageBridgeParent.cpp b/gfx/layers/ipc/ImageBridgeParent.cpp index 122c8d42f36a..3cb807263dff 100644 --- a/gfx/layers/ipc/ImageBridgeParent.cpp +++ b/gfx/layers/ipc/ImageBridgeParent.cpp @@ -239,19 +239,21 @@ mozilla::ipc::IPCResult ImageBridgeParent::RecvWillClose() } PCompositableParent* -ImageBridgeParent::AllocPCompositableParent(const TextureInfo& aInfo, - const uint64_t& aID, - PImageContainerParent* aImageContainer) +ImageBridgeParent::AllocPCompositableParent(const TextureInfo& aInfo, const uint64_t& aID) { - PCompositableParent* actor = CompositableHost::CreateIPDLActor(this, aInfo, aImageContainer); + PCompositableParent* actor = CompositableHost::CreateIPDLActor(this, aInfo); if (mCompositables.find(aID) != mCompositables.end()) { NS_ERROR("Async compositable ID already exists"); return actor; } + if (!aID) { + NS_ERROR("Expected non-zero async compositable ID"); + return actor; + } CompositableHost* host = CompositableHost::FromIPDLActor(actor); - host->SetAsyncID(aID); + host->SetAsyncRef(AsyncCompositableRef(OtherPid(), aID)); mCompositables[aID] = host; return actor; @@ -260,7 +262,8 @@ ImageBridgeParent::AllocPCompositableParent(const TextureInfo& aInfo, bool ImageBridgeParent::DeallocPCompositableParent(PCompositableParent* aActor) { if (CompositableHost* host = CompositableHost::FromIPDLActor(aActor)) { - mCompositables.erase(host->GetAsyncID()); + const AsyncCompositableRef& ref = host->GetAsyncRef(); + mCompositables.erase(ref.mAsyncId); } return CompositableHost::DestroyIPDLActor(aActor); } @@ -316,20 +319,20 @@ ImageBridgeParent::SendAsyncMessage(const InfallibleTArrayOtherPid() == aB.imageContainerParent()->OtherPid(); + return aA.mImageBridgeProcessId == aB.mImageBridgeProcessId; } - bool LessThan(const ImageCompositeNotification& aA, - const ImageCompositeNotification& aB) const + bool LessThan(const ImageCompositeNotificationInfo& aA, + const ImageCompositeNotificationInfo& aB) const { - return aA.imageContainerParent()->OtherPid() < aB.imageContainerParent()->OtherPid(); + return aA.mImageBridgeProcessId < aB.mImageBridgeProcessId; } }; /* static */ bool -ImageBridgeParent::NotifyImageComposites(nsTArray& aNotifications) +ImageBridgeParent::NotifyImageComposites(nsTArray& aNotifications) { // Group the notifications by destination process ID and then send the // notifications in one message per group. @@ -338,13 +341,13 @@ ImageBridgeParent::NotifyImageComposites(nsTArray& a bool ok = true; while (i < aNotifications.Length()) { AutoTArray notifications; - notifications.AppendElement(aNotifications[i]); + notifications.AppendElement(aNotifications[i].mNotification); uint32_t end = i + 1; - MOZ_ASSERT(aNotifications[i].imageContainerParent()); - ProcessId pid = aNotifications[i].imageContainerParent()->OtherPid(); + MOZ_ASSERT(aNotifications[i].mNotification.asyncCompositableID()); + ProcessId pid = aNotifications[i].mImageBridgeProcessId; while (end < aNotifications.Length() && - aNotifications[end].imageContainerParent()->OtherPid() == pid) { - notifications.AppendElement(aNotifications[end]); + aNotifications[end].mImageBridgeProcessId == pid) { + notifications.AppendElement(aNotifications[end].mNotification); ++end; } GetInstance(pid)->SendPendingAsyncMessages(); diff --git a/gfx/layers/ipc/ImageBridgeParent.h b/gfx/layers/ipc/ImageBridgeParent.h index 419e01d41505..f4dd6eefd89c 100644 --- a/gfx/layers/ipc/ImageBridgeParent.h +++ b/gfx/layers/ipc/ImageBridgeParent.h @@ -32,6 +32,8 @@ class Shmem; namespace layers { +struct ImageCompositeNotificationInfo; + /** * ImageBridgeParent is the manager Protocol of ImageContainerParent. * It's purpose is mainly to setup the IPDL connection. Most of the @@ -79,8 +81,7 @@ public: const uint64_t& aFwdTransactionId) override; PCompositableParent* AllocPCompositableParent(const TextureInfo& aInfo, - const uint64_t& aID, - PImageContainerParent* aImageContainer) override; + const uint64_t& aID) override; bool DeallocPCompositableParent(PCompositableParent* aActor) override; virtual PTextureParent* AllocPTextureParent(const SurfaceDescriptor& aSharedData, @@ -121,7 +122,7 @@ public: static ImageBridgeParent* GetInstance(ProcessId aId); - static bool NotifyImageComposites(nsTArray& aNotifications); + static bool NotifyImageComposites(nsTArray& aNotifications); virtual bool UsesImageBridge() const override { return true; } diff --git a/gfx/layers/ipc/ImageContainerChild.cpp b/gfx/layers/ipc/ImageContainerChild.cpp index c54eb2c419fb..b265d9141ad4 100644 --- a/gfx/layers/ipc/ImageContainerChild.cpp +++ b/gfx/layers/ipc/ImageContainerChild.cpp @@ -32,7 +32,7 @@ ImageContainerChild::NotifyComposite(const ImageCompositeNotification& aNotifica MutexAutoLock lock(mLock); if (mImageContainer) { - mImageContainer->NotifyCompositeInternal(aNotification); + mImageContainer->NotifyComposite(aNotification); } } diff --git a/gfx/layers/ipc/ImageContainerParent.cpp b/gfx/layers/ipc/ImageContainerParent.cpp index ef701d709873..6af9d2fcd999 100644 --- a/gfx/layers/ipc/ImageContainerParent.cpp +++ b/gfx/layers/ipc/ImageContainerParent.cpp @@ -16,9 +16,6 @@ namespace layers { ImageContainerParent::~ImageContainerParent() { - while (!mImageHosts.IsEmpty()) { - mImageHosts[mImageHosts.Length() - 1]->SetImageContainer(nullptr); - } } mozilla::ipc::IPCResult ImageContainerParent::RecvAsyncDelete() diff --git a/gfx/layers/ipc/LayerTransactionParent.cpp b/gfx/layers/ipc/LayerTransactionParent.cpp index 532e2e42377c..b490015f44dd 100644 --- a/gfx/layers/ipc/LayerTransactionParent.cpp +++ b/gfx/layers/ipc/LayerTransactionParent.cpp @@ -963,7 +963,7 @@ LayerTransactionParent::RecvForceComposite() PCompositableParent* LayerTransactionParent::AllocPCompositableParent(const TextureInfo& aInfo) { - return CompositableHost::CreateIPDLActor(this, aInfo, 0); + return CompositableHost::CreateIPDLActor(this, aInfo); } bool diff --git a/gfx/layers/ipc/LayersMessages.ipdlh b/gfx/layers/ipc/LayersMessages.ipdlh index 344700fd5a2d..be9507162fdf 100644 --- a/gfx/layers/ipc/LayersMessages.ipdlh +++ b/gfx/layers/ipc/LayersMessages.ipdlh @@ -523,7 +523,7 @@ struct OpContentBufferSwap { * image is composited by an ImageHost. */ struct ImageCompositeNotification { - PImageContainer imageContainer; + uint64_t asyncCompositableID; TimeStamp imageTimeStamp; TimeStamp firstCompositeTimeStamp; uint32_t frameID; diff --git a/gfx/layers/ipc/PImageBridge.ipdl b/gfx/layers/ipc/PImageBridge.ipdl index ad0f29ef8435..2b47c2f0fd85 100644 --- a/gfx/layers/ipc/PImageBridge.ipdl +++ b/gfx/layers/ipc/PImageBridge.ipdl @@ -55,9 +55,7 @@ parent: // before sending closing the channel. sync WillClose(); - async PCompositable(TextureInfo aInfo, - uint64_t aId, - nullable PImageContainer aImageContainer); + async PCompositable(TextureInfo aInfo, uint64_t aId); async PTexture(SurfaceDescriptor aSharedData, LayersBackend aBackend, TextureFlags aTextureFlags, uint64_t aSerial); async PMediaSystemResourceManager(); async PImageContainer();