Bug 1651087 - Check if the session is ended before processing XRSession::StartFrame() r=kip,daoshengmu

Differential Revision: https://phabricator.services.mozilla.com/D82556
This commit is contained in:
Imanol Fernandez 2020-07-07 21:52:56 +00:00
Родитель 8a563af888
Коммит f17da90522
1 изменённых файлов: 7 добавлений и 3 удалений

Просмотреть файл

@ -292,9 +292,13 @@ void XRSession::WillRefresh(mozilla::TimeStamp aTime) {
}
void XRSession::StartFrame() {
if (mShutdown || mEnded) {
return;
}
ApplyPendingRenderState();
if (mActiveRenderState->GetBaseLayer() == nullptr) {
XRWebGLLayer* baseLayer = mActiveRenderState->GetBaseLayer();
if (!baseLayer) {
return;
}
@ -311,7 +315,7 @@ void XRSession::StartFrame() {
RefPtr<XRFrame> frame = PooledFrame();
frame->StartAnimationFrame();
mActiveRenderState->GetBaseLayer()->StartAnimationFrame();
baseLayer->StartAnimationFrame();
nsTArray<XRFrameRequest> callbacks;
callbacks.AppendElements(mFrameRequestCallbacks);
mFrameRequestCallbacks.Clear();
@ -319,7 +323,7 @@ void XRSession::StartFrame() {
callback.Call(timeStamp, *frame);
}
mActiveRenderState->GetBaseLayer()->EndAnimationFrame();
baseLayer->EndAnimationFrame();
frame->EndAnimationFrame();
if (mDisplayPresentation) {
mDisplayPresentation->SubmitFrame();