forked from mirrors/gecko-dev
Bug 1824465 - Part 7: Make PRemoteDecoderManager refcounted, r=ipc-reviewers,mccr8
Differential Revision: https://phabricator.services.mozilla.com/D173722
This commit is contained in:
parent
20e947c8c3
commit
cb22e7a8aa
5 changed files with 1 additions and 15 deletions
|
|
@ -38,7 +38,7 @@ union RemoteDecoderInfoIPDL
|
|||
VideoDecoderInfoIPDL;
|
||||
};
|
||||
|
||||
[ManualDealloc, NeedsOtherPid]
|
||||
[NeedsOtherPid]
|
||||
sync protocol PRemoteDecoderManager
|
||||
{
|
||||
manages PRemoteDecoder;
|
||||
|
|
|
|||
|
|
@ -768,15 +768,10 @@ void RemoteDecoderManagerChild::OpenRemoteDecoderManagerChildForProcess(
|
|||
new RemoteDecoderManagerChild(aLocation);
|
||||
if (aEndpoint.Bind(manager)) {
|
||||
remoteDecoderManagerChild = manager;
|
||||
manager->InitIPDL();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void RemoteDecoderManagerChild::InitIPDL() { mIPDLSelfRef = this; }
|
||||
|
||||
void RemoteDecoderManagerChild::ActorDealloc() { mIPDLSelfRef = nullptr; }
|
||||
|
||||
bool RemoteDecoderManagerChild::DeallocShmem(mozilla::ipc::Shmem& aShmem) {
|
||||
nsCOMPtr<nsISerialEventTarget> managerThread = GetManagerThread();
|
||||
if (!managerThread) {
|
||||
|
|
|
|||
|
|
@ -107,10 +107,6 @@ class RemoteDecoderManagerChild final
|
|||
RemoteDecodeIn aLocation);
|
||||
|
||||
protected:
|
||||
void InitIPDL();
|
||||
|
||||
void ActorDealloc() override;
|
||||
|
||||
void HandleFatalError(const char* aMsg) const override;
|
||||
|
||||
PRemoteDecoderChild* AllocPRemoteDecoderChild(
|
||||
|
|
@ -140,7 +136,6 @@ class RemoteDecoderManagerChild final
|
|||
// A thread-safe method to launch the RDD process if it hasn't launched yet.
|
||||
static RefPtr<GenericNonExclusivePromise> LaunchRDDProcessIfNeeded();
|
||||
|
||||
RefPtr<RemoteDecoderManagerChild> mIPDLSelfRef;
|
||||
// The location for decoding, Rdd or Gpu process.
|
||||
const RemoteDecodeIn mLocation;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -277,11 +277,8 @@ void RemoteDecoderManagerParent::Open(
|
|||
// We can't recover from this.
|
||||
MOZ_CRASH("Failed to bind RemoteDecoderManagerParent to endpoint");
|
||||
}
|
||||
AddRef();
|
||||
}
|
||||
|
||||
void RemoteDecoderManagerParent::ActorDealloc() { Release(); }
|
||||
|
||||
mozilla::ipc::IPCResult RemoteDecoderManagerParent::RecvReadback(
|
||||
const SurfaceDescriptorGPUVideo& aSD, SurfaceDescriptor* aResult) {
|
||||
const SurfaceDescriptorRemoteDecoder& sd = aSD;
|
||||
|
|
|
|||
|
|
@ -76,7 +76,6 @@ class RemoteDecoderManagerParent final
|
|||
const SurfaceDescriptorGPUVideo& aSD);
|
||||
|
||||
void ActorDestroy(mozilla::ipc::IProtocol::ActorDestroyReason) override;
|
||||
void ActorDealloc() override;
|
||||
|
||||
private:
|
||||
explicit RemoteDecoderManagerParent(nsISerialEventTarget* aThread);
|
||||
|
|
|
|||
Loading…
Reference in a new issue