зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
8a563af888
Коммит
f17da90522
|
@ -292,9 +292,13 @@ void XRSession::WillRefresh(mozilla::TimeStamp aTime) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void XRSession::StartFrame() {
|
void XRSession::StartFrame() {
|
||||||
|
if (mShutdown || mEnded) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
ApplyPendingRenderState();
|
ApplyPendingRenderState();
|
||||||
|
|
||||||
if (mActiveRenderState->GetBaseLayer() == nullptr) {
|
XRWebGLLayer* baseLayer = mActiveRenderState->GetBaseLayer();
|
||||||
|
if (!baseLayer) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -311,7 +315,7 @@ void XRSession::StartFrame() {
|
||||||
RefPtr<XRFrame> frame = PooledFrame();
|
RefPtr<XRFrame> frame = PooledFrame();
|
||||||
frame->StartAnimationFrame();
|
frame->StartAnimationFrame();
|
||||||
|
|
||||||
mActiveRenderState->GetBaseLayer()->StartAnimationFrame();
|
baseLayer->StartAnimationFrame();
|
||||||
nsTArray<XRFrameRequest> callbacks;
|
nsTArray<XRFrameRequest> callbacks;
|
||||||
callbacks.AppendElements(mFrameRequestCallbacks);
|
callbacks.AppendElements(mFrameRequestCallbacks);
|
||||||
mFrameRequestCallbacks.Clear();
|
mFrameRequestCallbacks.Clear();
|
||||||
|
@ -319,7 +323,7 @@ void XRSession::StartFrame() {
|
||||||
callback.Call(timeStamp, *frame);
|
callback.Call(timeStamp, *frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
mActiveRenderState->GetBaseLayer()->EndAnimationFrame();
|
baseLayer->EndAnimationFrame();
|
||||||
frame->EndAnimationFrame();
|
frame->EndAnimationFrame();
|
||||||
if (mDisplayPresentation) {
|
if (mDisplayPresentation) {
|
||||||
mDisplayPresentation->SubmitFrame();
|
mDisplayPresentation->SubmitFrame();
|
||||||
|
|
Загрузка…
Ссылка в новой задаче