From d5ce064d6286e111886149104bfc300c25a4a188 Mon Sep 17 00:00:00 2001 From: Philip Lamb Date: Sat, 11 Jan 2020 08:32:05 +1300 Subject: [PATCH] Fix skybox reverting to non-void after exiting theatre mode. (#2606) --- app/src/main/cpp/BrowserWorld.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/app/src/main/cpp/BrowserWorld.cpp b/app/src/main/cpp/BrowserWorld.cpp index 52e239615..a96108fd1 100644 --- a/app/src/main/cpp/BrowserWorld.cpp +++ b/app/src/main/cpp/BrowserWorld.cpp @@ -1480,13 +1480,21 @@ BrowserWorld::CreateSkyBox(const std::string& aBasePath, const std::string& aExt ASSERT_ON_RENDER_THREAD(); vrb::PausePerformanceMonitor pauseMonitor(*m.monitor); const bool empty = aBasePath == "cubemap/void"; + if (empty) { + if (m.skybox) { + VRLayerCubePtr layer = m.skybox->GetLayer(); + if (layer) { + m.device->DeleteLayer(layer); + } + m.skybox->GetRoot()->RemoveFromParents(); + m.skybox = nullptr; + } + return; + } const std::string extension = aExtension.empty() ? ".ktx" : aExtension; const GLenum glFormat = extension == ".ktx" ? GL_COMPRESSED_RGB8_ETC2 : GL_RGBA8; const int32_t size = 1024; - if (m.skybox && empty) { - m.skybox->SetVisible(false); - return; - } else if (m.skybox) { + if (m.skybox) { m.skybox->SetVisible(true); if (m.skybox->GetLayer() && (m.skybox->GetLayer()->GetWidth() != size || m.skybox->GetLayer()->GetFormat() != glFormat)) { VRLayerCubePtr oldLayer = m.skybox->GetLayer(); @@ -1495,8 +1503,7 @@ BrowserWorld::CreateSkyBox(const std::string& aBasePath, const std::string& aExt m.device->DeleteLayer(oldLayer); } m.skybox->Load(m.loader, aBasePath, extension); - return; - } else if (!empty) { + } else { VRLayerCubePtr layer = m.device->CreateLayerCube(size, size, glFormat); m.skybox = Skybox::Create(m.create, layer); m.rootOpaqueParent->AddNode(m.skybox->GetRoot());