diff --git a/gfx/layers/ipc/CompositorParent.cpp b/gfx/layers/ipc/CompositorParent.cpp index 147e293462fd..b48aac4b7cbb 100644 --- a/gfx/layers/ipc/CompositorParent.cpp +++ b/gfx/layers/ipc/CompositorParent.cpp @@ -1636,7 +1636,6 @@ class CrossProcessCompositorParent final : public PCompositorParent, public: explicit CrossProcessCompositorParent(Transport* aTransport) : mTransport(aTransport) - , mCompositorThreadHolder(sCompositorThreadHolder) , mNotifyAfterRemotePaint(false) { MOZ_ASSERT(NS_IsMainThread()); @@ -1726,6 +1725,8 @@ public: TimeStamp& aCompositeStart, TimeStamp& aCompositeEnd); +protected: + void OnChannelConnected(int32_t pid) override { mCompositorThreadHolder = sCompositorThreadHolder; } private: // Private destructor, to discourage deletion outside of Release(): virtual ~CrossProcessCompositorParent(); diff --git a/gfx/layers/ipc/ImageBridgeParent.cpp b/gfx/layers/ipc/ImageBridgeParent.cpp index 1b488c2f863c..af990683416b 100644 --- a/gfx/layers/ipc/ImageBridgeParent.cpp +++ b/gfx/layers/ipc/ImageBridgeParent.cpp @@ -58,7 +58,6 @@ ImageBridgeParent::ImageBridgeParent(MessageLoop* aLoop, : mMessageLoop(aLoop) , mTransport(aTransport) , mSetChildThreadPriority(false) - , mCompositorThreadHolder(GetCompositorThreadHolder()) { MOZ_ASSERT(NS_IsMainThread()); sMainLoop = MessageLoop::current(); @@ -385,6 +384,12 @@ ImageBridgeParent::CloneToplevel(const InfallibleTArray& aFds return nullptr; } +void +ImageBridgeParent::OnChannelConnected(int32_t aPid) +{ + mCompositorThreadHolder = GetCompositorThreadHolder(); +} + bool ImageBridgeParent::IsSameProcess() const { return OtherPid() == base::GetCurrentProcId(); diff --git a/gfx/layers/ipc/ImageBridgeParent.h b/gfx/layers/ipc/ImageBridgeParent.h index bf9c9e4ebf4b..9cfba1a20bae 100644 --- a/gfx/layers/ipc/ImageBridgeParent.h +++ b/gfx/layers/ipc/ImageBridgeParent.h @@ -151,6 +151,9 @@ public: base::ProcessHandle aPeerProcess, mozilla::ipc::ProtocolCloneContext* aCtx) override; +protected: + void OnChannelConnected(int32_t pid) override; + private: void DeferredDestroy(); MessageLoop* mMessageLoop;