зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1321275 - Confirm VRLayerChild is not destroyed before sending destroy message to the parent side; r=kip
MozReview-Commit-ID: v0awwplOQv --HG-- extra : rebase_source : 3a15b5249ea03e0d64a6229d55d6d418d9b8076f
This commit is contained in:
Родитель
9d0a7da8bc
Коммит
6a807270be
|
@ -96,7 +96,9 @@ void
|
|||
VRDisplayPresentation::DestroyLayers()
|
||||
{
|
||||
for (VRLayerChild* layer : mLayers) {
|
||||
Unused << layer->SendDestroy();
|
||||
if (layer->IsIPCOpen()) {
|
||||
Unused << layer->SendDestroy();
|
||||
}
|
||||
}
|
||||
mLayers.Clear();
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@ VRLayerChild::VRLayerChild(uint32_t aVRDisplayID, VRManagerChild* aVRManagerChil
|
|||
, mCanvasElement(nullptr)
|
||||
, mShSurfClient(nullptr)
|
||||
, mFront(nullptr)
|
||||
, mIPCOpen(true)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -74,6 +75,12 @@ VRLayerChild::SubmitFrame()
|
|||
SendSubmitFrame(mFront->GetIPDLActor());
|
||||
}
|
||||
|
||||
bool
|
||||
VRLayerChild::IsIPCOpen()
|
||||
{
|
||||
return mIPCOpen;
|
||||
}
|
||||
|
||||
void
|
||||
VRLayerChild::ClearSurfaces()
|
||||
{
|
||||
|
@ -81,5 +88,11 @@ VRLayerChild::ClearSurfaces()
|
|||
mShSurfClient = nullptr;
|
||||
}
|
||||
|
||||
void
|
||||
VRLayerChild::ActorDestroy(ActorDestroyReason aWhy)
|
||||
{
|
||||
mIPCOpen = false;
|
||||
}
|
||||
|
||||
} // namespace gfx
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -35,16 +35,19 @@ public:
|
|||
VRLayerChild(uint32_t aVRDisplayID, VRManagerChild* aVRManagerChild);
|
||||
void Initialize(dom::HTMLCanvasElement* aCanvasElement);
|
||||
void SubmitFrame();
|
||||
bool IsIPCOpen();
|
||||
|
||||
protected:
|
||||
virtual ~VRLayerChild();
|
||||
void ClearSurfaces();
|
||||
virtual void ActorDestroy(ActorDestroyReason aWhy) override;
|
||||
|
||||
uint32_t mVRDisplayID;
|
||||
|
||||
RefPtr<dom::HTMLCanvasElement> mCanvasElement;
|
||||
RefPtr<layers::SharedSurfaceTextureClient> mShSurfClient;
|
||||
RefPtr<layers::TextureClient> mFront;
|
||||
bool mIPCOpen;
|
||||
};
|
||||
|
||||
} // namespace gfx
|
||||
|
|
Загрузка…
Ссылка в новой задаче