mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 03:15:11 +00:00
Bug 1546298 - Set CompositorManagerParent::sInstance in GPU process r=nical
CompositorManagerParent::sInstance is not set in GPU process. It is necessary to send NotifyWebRenderError message. Differential Revision: https://phabricator.services.mozilla.com/D28452 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
e14a26647f
commit
521898a03e
@ -266,7 +266,7 @@ mozilla::ipc::IPCResult GPUParent::RecvInit(
|
||||
|
||||
mozilla::ipc::IPCResult GPUParent::RecvInitCompositorManager(
|
||||
Endpoint<PCompositorManagerParent>&& aEndpoint) {
|
||||
CompositorManagerParent::Create(std::move(aEndpoint));
|
||||
CompositorManagerParent::Create(std::move(aEndpoint), /* aIsRoot */ true);
|
||||
return IPC_OK();
|
||||
}
|
||||
|
||||
@ -377,7 +377,7 @@ mozilla::ipc::IPCResult GPUParent::RecvSimulateDeviceReset(
|
||||
|
||||
mozilla::ipc::IPCResult GPUParent::RecvNewContentCompositorManager(
|
||||
Endpoint<PCompositorManagerParent>&& aEndpoint) {
|
||||
CompositorManagerParent::Create(std::move(aEndpoint));
|
||||
CompositorManagerParent::Create(std::move(aEndpoint), /* aIsRoot */ false);
|
||||
return IPC_OK();
|
||||
}
|
||||
|
||||
|
@ -804,7 +804,8 @@ bool GPUProcessManager::CreateContentCompositorManager(
|
||||
|
||||
if (mGPUChild) {
|
||||
mGPUChild->SendNewContentCompositorManager(std::move(parentPipe));
|
||||
} else if (!CompositorManagerParent::Create(std::move(parentPipe))) {
|
||||
} else if (!CompositorManagerParent::Create(std::move(parentPipe),
|
||||
/* aIsRoot */ false)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -49,7 +49,7 @@ void CompositorManagerChild::InitSameProcess(uint32_t aNamespace,
|
||||
return;
|
||||
}
|
||||
|
||||
parent->BindComplete();
|
||||
parent->BindComplete(/* aIsRoot */ true);
|
||||
sInstance = child.forget();
|
||||
}
|
||||
|
||||
|
@ -51,7 +51,7 @@ CompositorManagerParent::CreateSameProcess() {
|
||||
|
||||
/* static */
|
||||
bool CompositorManagerParent::Create(
|
||||
Endpoint<PCompositorManagerParent>&& aEndpoint) {
|
||||
Endpoint<PCompositorManagerParent>&& aEndpoint, bool aIsRoot) {
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
|
||||
// We are creating a manager for the another process, inside the GPU process
|
||||
@ -65,9 +65,9 @@ bool CompositorManagerParent::Create(
|
||||
RefPtr<CompositorManagerParent> bridge = new CompositorManagerParent();
|
||||
|
||||
RefPtr<Runnable> runnable =
|
||||
NewRunnableMethod<Endpoint<PCompositorManagerParent>&&>(
|
||||
NewRunnableMethod<Endpoint<PCompositorManagerParent>&&, bool>(
|
||||
"CompositorManagerParent::Bind", bridge,
|
||||
&CompositorManagerParent::Bind, std::move(aEndpoint));
|
||||
&CompositorManagerParent::Bind, std::move(aEndpoint), aIsRoot);
|
||||
CompositorThreadHolder::Loop()->PostTask(runnable.forget());
|
||||
return true;
|
||||
}
|
||||
@ -119,16 +119,16 @@ CompositorManagerParent::CompositorManagerParent()
|
||||
CompositorManagerParent::~CompositorManagerParent() {}
|
||||
|
||||
void CompositorManagerParent::Bind(
|
||||
Endpoint<PCompositorManagerParent>&& aEndpoint) {
|
||||
Endpoint<PCompositorManagerParent>&& aEndpoint, bool aIsRoot) {
|
||||
MOZ_ASSERT(CompositorThreadHolder::IsInCompositorThread());
|
||||
if (NS_WARN_IF(!aEndpoint.Bind(this))) {
|
||||
return;
|
||||
}
|
||||
|
||||
BindComplete();
|
||||
BindComplete(aIsRoot);
|
||||
}
|
||||
|
||||
void CompositorManagerParent::BindComplete() {
|
||||
void CompositorManagerParent::BindComplete(bool aIsRoot) {
|
||||
MOZ_ASSERT(CompositorThreadHolder::IsInCompositorThread() ||
|
||||
NS_IsMainThread());
|
||||
|
||||
@ -137,7 +137,7 @@ void CompositorManagerParent::BindComplete() {
|
||||
AddRef();
|
||||
|
||||
StaticMutexAutoLock lock(sMutex);
|
||||
if (OtherPid() == base::GetCurrentProcId()) {
|
||||
if (aIsRoot) {
|
||||
sInstance = this;
|
||||
}
|
||||
|
||||
|
@ -30,7 +30,8 @@ class CompositorManagerParent final : public PCompositorManagerParent {
|
||||
|
||||
public:
|
||||
static already_AddRefed<CompositorManagerParent> CreateSameProcess();
|
||||
static bool Create(Endpoint<PCompositorManagerParent>&& aEndpoint);
|
||||
static bool Create(Endpoint<PCompositorManagerParent>&& aEndpoint,
|
||||
bool aIsRoot);
|
||||
static void Shutdown();
|
||||
|
||||
static already_AddRefed<CompositorBridgeParent>
|
||||
@ -50,7 +51,7 @@ class CompositorManagerParent final : public PCompositorManagerParent {
|
||||
|
||||
mozilla::ipc::IPCResult RecvReportMemory(ReportMemoryResolver&&);
|
||||
|
||||
void BindComplete();
|
||||
void BindComplete(bool aIsRoot);
|
||||
void ActorDestroy(ActorDestroyReason aReason) override;
|
||||
|
||||
bool DeallocPCompositorBridgeParent(PCompositorBridgeParent* aActor);
|
||||
@ -71,7 +72,7 @@ class CompositorManagerParent final : public PCompositorManagerParent {
|
||||
CompositorManagerParent();
|
||||
virtual ~CompositorManagerParent();
|
||||
|
||||
void Bind(Endpoint<PCompositorManagerParent>&& aEndpoint);
|
||||
void Bind(Endpoint<PCompositorManagerParent>&& aEndpoint, bool aIsRoot);
|
||||
|
||||
void DeallocPCompositorManagerParent() override;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user