mirror of
https://github.com/amwatson/CitraVR.git
synced 2024-09-20 03:11:40 +02:00
[GameSurfaceLayer] remove mActivityObject member and pass activityobject explicitly
This commit is contained in:
parent
3fd91245b7
commit
a8cd1e2bff
3 changed files with 9 additions and 12 deletions
|
@ -229,7 +229,6 @@ GameSurfaceLayer::GameSurfaceLayer(const XrVector3f&& position, JNIEnv* env, job
|
|||
, mResolutionFactor(resolutionFactor)
|
||||
, mImmersiveMode(VRSettings::values.vr_immersive_mode)
|
||||
, mEnv(env)
|
||||
, mActivityObject(activityObject)
|
||||
|
||||
{
|
||||
if (mImmersiveMode > 0) {
|
||||
|
@ -237,7 +236,7 @@ GameSurfaceLayer::GameSurfaceLayer(const XrVector3f&& position, JNIEnv* env, job
|
|||
mTopPanelFromWorld.position.z = mLowerPanelFromWorld.position.z;
|
||||
mLowerPanelFromWorld.position.y = -1.0f;
|
||||
}
|
||||
const int32_t initializationStatus = Init(session);
|
||||
const int32_t initializationStatus = Init(session, activityObject);
|
||||
if (initializationStatus < 0) {
|
||||
FAIL("Could not initialize GameSurfaceLayer -- error '%d'", initializationStatus);
|
||||
}
|
||||
|
@ -245,14 +244,14 @@ GameSurfaceLayer::GameSurfaceLayer(const XrVector3f&& position, JNIEnv* env, job
|
|||
|
||||
GameSurfaceLayer::~GameSurfaceLayer() { Shutdown(); }
|
||||
|
||||
void GameSurfaceLayer::SetSurface() const {
|
||||
void GameSurfaceLayer::SetSurface(const jobject activityObject) const {
|
||||
assert(mVrGameSurfaceClass != nullptr);
|
||||
|
||||
const jmethodID setSurfaceMethodID =
|
||||
mEnv->GetStaticMethodID(mVrGameSurfaceClass, "setSurface",
|
||||
"(Lorg/citra/citra_emu/vr/VrActivity;Landroid/view/Surface;)V");
|
||||
if (setSurfaceMethodID == nullptr) { FAIL("Couldn't find setSurface()"); }
|
||||
mEnv->CallStaticVoidMethod(mVrGameSurfaceClass, setSurfaceMethodID, mActivityObject, mSurface);
|
||||
mEnv->CallStaticVoidMethod(mVrGameSurfaceClass, setSurfaceMethodID, activityObject, mSurface);
|
||||
}
|
||||
|
||||
void GameSurfaceLayer::Frame(const XrSpace& space, std::vector<XrCompositionLayer>& layers,
|
||||
|
@ -455,14 +454,13 @@ void GameSurfaceLayer::SetTopPanelFromThumbstick(const float thumbstickY) {
|
|||
}
|
||||
|
||||
// Next error code: -2
|
||||
int32_t GameSurfaceLayer::Init(const XrSession& session) {
|
||||
int32_t GameSurfaceLayer::Init(const XrSession& session, const jobject activityObject) {
|
||||
static const std::string gameSurfaceClassName = "org/citra/citra_emu/vr/GameSurfaceLayer";
|
||||
mVrGameSurfaceClass =
|
||||
JniUtils::GetGlobalClassReference(mEnv, mActivityObject, gameSurfaceClassName.c_str());
|
||||
JniUtils::GetGlobalClassReference(mEnv, activityObject, gameSurfaceClassName.c_str());
|
||||
BAIL_ON_COND(mVrGameSurfaceClass == nullptr, "No java Game Surface Layer class", -1);
|
||||
CreateSwapchain();
|
||||
SetSurface();
|
||||
|
||||
SetSurface(activityObject);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -90,7 +90,7 @@ public:
|
|||
/** Called on resume. Sets the surface in the native rendering library.
|
||||
* Overrides the normal surface passed by Citra
|
||||
*/
|
||||
void SetSurface() const;
|
||||
void SetSurface(const jobject activityObject) const;
|
||||
|
||||
/** Called once-per-frame. Populates the layer list to show the
|
||||
* top and bottom panels as two separate layers.
|
||||
|
@ -138,7 +138,7 @@ public:
|
|||
void SetTopPanelFromThumbstick(const float thumbstickY);
|
||||
|
||||
private:
|
||||
int Init(const XrSession& session);
|
||||
int Init(const XrSession& session, const jobject activityObject);
|
||||
void Shutdown();
|
||||
|
||||
/** Creates the swapchain.
|
||||
|
@ -181,7 +181,6 @@ private:
|
|||
//============================
|
||||
// JNI objects
|
||||
JNIEnv* mEnv = nullptr;
|
||||
jobject mActivityObject = nullptr;
|
||||
jclass mVrGameSurfaceClass = nullptr;
|
||||
jobject mSurface = nullptr;
|
||||
};
|
||||
|
|
|
@ -876,7 +876,7 @@ private:
|
|||
gOpenXr->mSession, XR_ANDROID_THREAD_TYPE_APPLICATION_MAIN_KHR, gettid()));
|
||||
if (mGameSurfaceLayer) {
|
||||
ALOGD("SetSurface");
|
||||
mGameSurfaceLayer->SetSurface();
|
||||
mGameSurfaceLayer->SetSurface(mActivityObject);
|
||||
}
|
||||
}
|
||||
} else if (state == XR_SESSION_STATE_STOPPING) {
|
||||
|
|
Loading…
Reference in a new issue