From a5d87062d970b096ce13ca66097213349b4de006 Mon Sep 17 00:00:00 2001 From: Imanol Fernandez Date: Wed, 4 Sep 2019 12:02:14 +0200 Subject: [PATCH 1/2] Fix Oculus layers array stack overflow --- app/src/oculusvr/cpp/DeviceDelegateOculusVR.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/oculusvr/cpp/DeviceDelegateOculusVR.cpp b/app/src/oculusvr/cpp/DeviceDelegateOculusVR.cpp index a6648b08d..18705d9f9 100644 --- a/app/src/oculusvr/cpp/DeviceDelegateOculusVR.cpp +++ b/app/src/oculusvr/cpp/DeviceDelegateOculusVR.cpp @@ -1454,7 +1454,7 @@ DeviceDelegateOculusVR::EndFrame(const bool aDiscard) { // Draw back layers for (const OculusLayerPtr& layer: m.uiLayers) { - if (!layer->GetDrawInFront() && layer->IsDrawRequested() && layerCount < ovrMaxLayerCount) { + if (!layer->GetDrawInFront() && layer->IsDrawRequested() && (layerCount < ovrMaxLayerCount - 1)) { layer->Update(m.predictedTracking); layers[layerCount++] = layer->Header(); layer->ClearRequestDraw(); From 5e83e475fb46cc7e069295a6f675678d65181964 Mon Sep 17 00:00:00 2001 From: Imanol Fernandez Date: Wed, 4 Sep 2019 12:03:03 +0200 Subject: [PATCH 2/2] It's preferable to hide the windows first to avoid max layers race conditions --- .../shared/org/mozilla/vrbrowser/ui/widgets/Windows.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/Windows.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/Windows.java index 927497828..bc2c9789b 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/Windows.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/Windows.java @@ -487,12 +487,12 @@ public void exitPrivateMode() { } else { mPrivateWindowPlacement = WindowPlacement.FRONT; } - for (WindowWidget window: mRegularWindows) { - setWindowVisible(window, true); - } for (WindowWidget window: mPrivateWindows) { setWindowVisible(window, false); } + for (WindowWidget window: mRegularWindows) { + setWindowVisible(window, true); + } focusWindow(getWindowWithPlacement(mRegularWindowPlacement)); updateViews(); mWidgetManager.popWorldBrightness(this);