Skip to content
This repository was archived by the owner on Jul 22, 2024. It is now read-only.

Commit 8be8771

Browse files
committed
Fix jniEnv not set when layer a layer is resized after the surface has been moved
1 parent 2d38f82 commit 8be8771

3 files changed

Lines changed: 12 additions & 11 deletions

File tree

app/src/oculusvr/cpp/DeviceDelegateOculusVR.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1058,7 +1058,7 @@ DeviceDelegateOculusVR::CreateLayerQuad(int32_t aWidth, int32_t aHeight,
10581058
return nullptr;
10591059
}
10601060
VRLayerQuadPtr layer = VRLayerQuad::Create(aWidth, aHeight, aSurfaceType);
1061-
OculusLayerQuadPtr oculusLayer = OculusLayerQuad::Create(layer);
1061+
OculusLayerQuadPtr oculusLayer = OculusLayerQuad::Create(m.java.Env, layer);
10621062
m.AddUILayer(oculusLayer, aSurfaceType);
10631063
return layer;
10641064
}
@@ -1074,7 +1074,7 @@ DeviceDelegateOculusVR::CreateLayerQuad(const VRLayerSurfacePtr& aMoveLayer) {
10741074

10751075
for (int i = 0; i < m.uiLayers.size(); ++i) {
10761076
if (m.uiLayers[i]->GetLayer() == aMoveLayer) {
1077-
oculusLayer = OculusLayerQuad::Create(layer, m.uiLayers[i]);
1077+
oculusLayer = OculusLayerQuad::Create(m.java.Env, layer, m.uiLayers[i]);
10781078
m.uiLayers.erase(m.uiLayers.begin() + i);
10791079
break;
10801080
}
@@ -1092,7 +1092,7 @@ DeviceDelegateOculusVR::CreateLayerCylinder(int32_t aWidth, int32_t aHeight,
10921092
return nullptr;
10931093
}
10941094
VRLayerCylinderPtr layer = VRLayerCylinder::Create(aWidth, aHeight, aSurfaceType);
1095-
OculusLayerCylinderPtr oculusLayer = OculusLayerCylinder::Create(layer);
1095+
OculusLayerCylinderPtr oculusLayer = OculusLayerCylinder::Create(m.java.Env, layer);
10961096
m.AddUILayer(oculusLayer, aSurfaceType);
10971097
return layer;
10981098
}
@@ -1108,7 +1108,7 @@ DeviceDelegateOculusVR::CreateLayerCylinder(const VRLayerSurfacePtr& aMoveLayer)
11081108

11091109
for (int i = 0; i < m.uiLayers.size(); ++i) {
11101110
if (m.uiLayers[i]->GetLayer() == aMoveLayer) {
1111-
oculusLayer = OculusLayerCylinder::Create(layer, m.uiLayers[i]);
1111+
oculusLayer = OculusLayerCylinder::Create(m.java.Env, layer, m.uiLayers[i]);
11121112
m.uiLayers.erase(m.uiLayers.begin() + i);
11131113
break;
11141114
}

app/src/oculusvr/cpp/OculusVRLayers.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ bool OculusLayer::sForceClip = false;
1717
// OculusLayerQuad
1818

1919
OculusLayerQuadPtr
20-
OculusLayerQuad::Create(const VRLayerQuadPtr& aLayer, const OculusLayerPtr& aSource) {
20+
OculusLayerQuad::Create(JNIEnv *aEnv, const VRLayerQuadPtr& aLayer, const OculusLayerPtr& aSource) {
2121
auto result = std::make_shared<OculusLayerQuad>();
2222
result->layer = aLayer;
2323
if (aSource) {
24-
result->TakeSurface(aSource);
24+
result->TakeSurface(aEnv, aSource);
2525
}
2626
return result;
2727
}
@@ -68,11 +68,11 @@ OculusLayerQuad::Update(const ovrTracking2& aTracking, ovrTextureSwapChain* aCle
6868
// OculusLayerCylinder
6969

7070
OculusLayerCylinderPtr
71-
OculusLayerCylinder::Create(const VRLayerCylinderPtr& aLayer, const OculusLayerPtr& aSource) {
71+
OculusLayerCylinder::Create(JNIEnv *aEnv, const VRLayerCylinderPtr& aLayer, const OculusLayerPtr& aSource) {
7272
auto result = std::make_shared<OculusLayerCylinder>();
7373
result->layer = aLayer;
7474
if (aSource) {
75-
result->TakeSurface(aSource);
75+
result->TakeSurface(aEnv, aSource);
7676
}
7777
return result;
7878
}

app/src/oculusvr/cpp/OculusVRLayers.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -246,8 +246,9 @@ class OculusLayerSurface : public OculusLayerBase<T, U> {
246246
}
247247

248248
protected:
249-
void TakeSurface(const OculusLayerPtr &aSource) {
249+
void TakeSurface(JNIEnv * aEnv, const OculusLayerPtr &aSource) {
250250
this->swapChain = aSource->GetSwapChain();
251+
this->jniEnv = aEnv;
251252
this->surface = aSource->GetSurface();
252253
this->surfaceChangedTarget = aSource->GetSurfaceChangedTarget();
253254
if (this->surfaceChangedTarget) {
@@ -307,7 +308,7 @@ typedef std::shared_ptr<OculusLayerQuad> OculusLayerQuadPtr;
307308
class OculusLayerQuad : public OculusLayerSurface<VRLayerQuadPtr, ovrLayerProjection2> {
308309
public:
309310
static OculusLayerQuadPtr
310-
Create(const VRLayerQuadPtr &aLayer, const OculusLayerPtr &aSource = nullptr);
311+
Create(JNIEnv *aEnv, const VRLayerQuadPtr &aLayer, const OculusLayerPtr &aSource = nullptr);
311312
void Init(JNIEnv *aEnv, vrb::RenderContextPtr &aContext) override;
312313
void Update(const ovrTracking2 &aTracking, ovrTextureSwapChain *aClearSwapChain) override;
313314
};
@@ -320,7 +321,7 @@ typedef std::shared_ptr<OculusLayerCylinder> OculusLayerCylinderPtr;
320321
class OculusLayerCylinder : public OculusLayerSurface<VRLayerCylinderPtr, ovrLayerCylinder2> {
321322
public:
322323
static OculusLayerCylinderPtr
323-
Create(const VRLayerCylinderPtr &aLayer, const OculusLayerPtr &aSource = nullptr);
324+
Create(JNIEnv *aEnv, const VRLayerCylinderPtr &aLayer, const OculusLayerPtr &aSource = nullptr);
324325
void Init(JNIEnv *aEnv, vrb::RenderContextPtr &aContext) override;
325326
void Update(const ovrTracking2 &aTracking, ovrTextureSwapChain *aClearSwapChain) override;
326327
};

0 commit comments

Comments
 (0)