mozilla::ipc::IPCResult WebRenderBridgeParent::RecvAddPipelineIdForCompositable(const wr::PipelineId& aPipelineId, const CompositableHandle& aHandle, const bool& aAsync) { if (mDestroyed) { return IPC_OK(); } MOZ_ASSERT(!mAsyncCompositables.Get(wr::AsUint64(aPipelineId)).get()); RefPtr<CompositableHost> host; if (aAsync) { RefPtr<ImageBridgeParent> imageBridge = ImageBridgeParent::GetInstance(OtherPid()); if (!imageBridge) { return IPC_FAIL_NO_REASON(this); } host = imageBridge->FindCompositable(aHandle); } else { host = FindCompositable(aHandle); } if (!host) { return IPC_FAIL_NO_REASON(this); } MOZ_ASSERT(host->AsWebRenderImageHost()); WebRenderImageHost* wrHost = host->AsWebRenderImageHost(); if (!wrHost) { return IPC_OK(); } wrHost->SetWrBridge(this); mAsyncCompositables.Put(wr::AsUint64(aPipelineId), wrHost); mAsyncImageManager->AddAsyncImagePipeline(aPipelineId, wrHost); return IPC_OK(); }
mozilla::ipc::IPCResult WebRenderBridgeParent::RecvAddExternalImageIdForCompositable(const ExternalImageId& aImageId, const CompositableHandle& aHandle) { if (mDestroyed) { return IPC_OK(); } MOZ_ASSERT(!mExternalImageIds.Get(wr::AsUint64(aImageId)).get()); RefPtr<CompositableHost> host = FindCompositable(aHandle); WebRenderImageHost* wrHost = host->AsWebRenderImageHost(); if (!wrHost) { return IPC_OK(); } wrHost->SetWrBridge(this); mExternalImageIds.Put(wr::AsUint64(aImageId), wrHost); return IPC_OK(); }