mirror of
https://github.com/lubosz/overte.git
synced 2025-08-07 19:41:20 +02:00
Merge pull request #14924 from amerhifi/feature/quest
Case 21032: Quest lifecycle start/stop fix. Partial fix to pause/resume
This commit is contained in:
commit
0d6bf79139
6 changed files with 26 additions and 46 deletions
|
@ -36,7 +36,6 @@ public class QuestQtActivity extends QtActivity {
|
||||||
public void launchOculusActivity() {
|
public void launchOculusActivity() {
|
||||||
Log.w("QQQ_Qt", "QuestQtActivity::launchOculusActivity");
|
Log.w("QQQ_Qt", "QuestQtActivity::launchOculusActivity");
|
||||||
runOnUiThread(()->{
|
runOnUiThread(()->{
|
||||||
keepInterfaceRunning = true;
|
|
||||||
launchedQuestMode = true;
|
launchedQuestMode = true;
|
||||||
moveTaskToBack(true);
|
moveTaskToBack(true);
|
||||||
startActivity(new Intent(this, QuestRenderActivity.class));
|
startActivity(new Intent(this, QuestRenderActivity.class));
|
||||||
|
|
|
@ -62,6 +62,7 @@ extern "C" {
|
||||||
initOculusPlatform(env, obj);
|
initOculusPlatform(env, obj);
|
||||||
}
|
}
|
||||||
QAndroidJniObject __interfaceActivity;
|
QAndroidJniObject __interfaceActivity;
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_io_highfidelity_oculus_OculusMobileActivity_questNativeOnCreate(JNIEnv *env, jobject obj) {
|
Java_io_highfidelity_oculus_OculusMobileActivity_questNativeOnCreate(JNIEnv *env, jobject obj) {
|
||||||
__android_log_print(ANDROID_LOG_INFO, "QQQ", __FUNCTION__);
|
__android_log_print(ANDROID_LOG_INFO, "QQQ", __FUNCTION__);
|
||||||
|
@ -85,10 +86,6 @@ JNIEXPORT void Java_io_highfidelity_oculus_OculusMobileActivity_questOnAppAfterL
|
||||||
AndroidHelper::instance().moveToThread(qApp->thread());
|
AndroidHelper::instance().moveToThread(qApp->thread());
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
|
||||||
Java_io_highfidelity_oculus_OculusMobileActivity_questNativeOnDestroy(JNIEnv *env, jobject obj) {
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_io_highfidelity_oculus_OculusMobileActivity_questNativeOnPause(JNIEnv *env, jobject obj) {
|
Java_io_highfidelity_oculus_OculusMobileActivity_questNativeOnPause(JNIEnv *env, jobject obj) {
|
||||||
AndroidHelper::instance().notifyEnterBackground();
|
AndroidHelper::instance().notifyEnterBackground();
|
||||||
|
|
|
@ -7,21 +7,13 @@
|
||||||
//
|
//
|
||||||
package io.highfidelity.oculus;
|
package io.highfidelity.oculus;
|
||||||
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
|
||||||
import android.os.Looper;
|
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.Surface;
|
import android.view.Surface;
|
||||||
import android.view.SurfaceHolder;
|
import android.view.SurfaceHolder;
|
||||||
import android.view.SurfaceView;
|
import android.view.SurfaceView;
|
||||||
import android.view.WindowManager;
|
|
||||||
import android.widget.LinearLayout;
|
|
||||||
|
|
||||||
|
|
||||||
import org.qtproject.qt5.android.bindings.QtActivity;
|
import org.qtproject.qt5.android.bindings.QtActivity;
|
||||||
|
|
||||||
import io.highfidelity.utils.HifiUtils;
|
import io.highfidelity.utils.HifiUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -35,11 +27,9 @@ public class OculusMobileActivity extends QtActivity implements SurfaceHolder.Ca
|
||||||
private native void nativeOnCreate();
|
private native void nativeOnCreate();
|
||||||
private native static void nativeOnResume();
|
private native static void nativeOnResume();
|
||||||
private native static void nativeOnPause();
|
private native static void nativeOnPause();
|
||||||
private native static void nativeOnDestroy();
|
|
||||||
private native static void nativeOnSurfaceChanged(Surface s);
|
private native static void nativeOnSurfaceChanged(Surface s);
|
||||||
|
|
||||||
private native void questNativeOnCreate();
|
private native void questNativeOnCreate();
|
||||||
private native void questNativeOnDestroy();
|
|
||||||
private native void questNativeOnPause();
|
private native void questNativeOnPause();
|
||||||
private native void questNativeOnResume();
|
private native void questNativeOnResume();
|
||||||
private native void questOnAppAfterLoad();
|
private native void questOnAppAfterLoad();
|
||||||
|
@ -48,10 +38,7 @@ public class OculusMobileActivity extends QtActivity implements SurfaceHolder.Ca
|
||||||
private SurfaceView mView;
|
private SurfaceView mView;
|
||||||
private SurfaceHolder mSurfaceHolder;
|
private SurfaceHolder mSurfaceHolder;
|
||||||
|
|
||||||
boolean isLoading =false;
|
|
||||||
|
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
isLoading=true;
|
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
HifiUtils.upackAssets(getAssets(), getCacheDir().getAbsolutePath());
|
HifiUtils.upackAssets(getAssets(), getCacheDir().getAbsolutePath());
|
||||||
|
|
||||||
|
@ -65,14 +52,10 @@ public class OculusMobileActivity extends QtActivity implements SurfaceHolder.Ca
|
||||||
nativeOnCreate();
|
nativeOnCreate();
|
||||||
questNativeOnCreate();
|
questNativeOnCreate();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onAppLoadedComplete() {
|
public void onAppLoadedComplete() {
|
||||||
Log.w(TAG, "QQQ Load Completed");
|
Log.w(TAG, "QQQ Load Completed");
|
||||||
isLoading=false;
|
|
||||||
|
|
||||||
//isLoading=false;
|
|
||||||
runOnUiThread(() -> {
|
runOnUiThread(() -> {
|
||||||
setContentView(mView); setContentView(mView);
|
setContentView(mView);
|
||||||
questOnAppAfterLoad();
|
questOnAppAfterLoad();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -80,23 +63,22 @@ public class OculusMobileActivity extends QtActivity implements SurfaceHolder.Ca
|
||||||
@Override
|
@Override
|
||||||
protected void onDestroy() {
|
protected void onDestroy() {
|
||||||
Log.w(TAG, "QQQ onDestroy");
|
Log.w(TAG, "QQQ onDestroy");
|
||||||
super.onDestroy();
|
|
||||||
|
|
||||||
if (mSurfaceHolder != null) {
|
nativeOnSurfaceChanged(null);
|
||||||
nativeOnSurfaceChanged(null);
|
|
||||||
}
|
Log.w(TAG, "QQQ onDestroy -- SUPER onDestroy");
|
||||||
nativeOnDestroy();
|
super.onDestroy();
|
||||||
questNativeOnDestroy();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onResume() {
|
protected void onResume() {
|
||||||
Log.w(TAG, "QQQ onResume");
|
Log.w(TAG, "QQQ onResume");
|
||||||
super.onResume();
|
super.onResume();
|
||||||
|
//Reconnect the global reference back to handler
|
||||||
|
nativeOnCreate();
|
||||||
|
|
||||||
questNativeOnResume();
|
questNativeOnResume();
|
||||||
nativeOnResume();
|
nativeOnResume();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -104,16 +86,21 @@ public class OculusMobileActivity extends QtActivity implements SurfaceHolder.Ca
|
||||||
Log.w(TAG, "QQQ onPause");
|
Log.w(TAG, "QQQ onPause");
|
||||||
super.onPause();
|
super.onPause();
|
||||||
|
|
||||||
if (!isLoading) {
|
questNativeOnPause();
|
||||||
questNativeOnPause();
|
nativeOnPause();
|
||||||
nativeOnPause();
|
}
|
||||||
}
|
|
||||||
|
@Override
|
||||||
|
protected void onStop(){
|
||||||
|
super.onStop();
|
||||||
|
Log.w(TAG, "QQQ Onstop called");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onRestart(){
|
protected void onRestart(){
|
||||||
super.onRestart();
|
super.onRestart();
|
||||||
nativeOnCreate();
|
Log.w(TAG, "QQQ onRestart called ****");
|
||||||
|
questOnAppAfterLoad();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -135,5 +122,6 @@ public class OculusMobileActivity extends QtActivity implements SurfaceHolder.Ca
|
||||||
Log.w(TAG, "QQQ surfaceDestroyed ***************************************************");
|
Log.w(TAG, "QQQ surfaceDestroyed ***************************************************");
|
||||||
nativeOnSurfaceChanged(null);
|
nativeOnSurfaceChanged(null);
|
||||||
mSurfaceHolder = null;
|
mSurfaceHolder = null;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -364,7 +364,10 @@ public class QtActivity extends Activity {
|
||||||
@Override
|
@Override
|
||||||
protected void onDestroy() {
|
protected void onDestroy() {
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
QtApplication.invokeDelegate();
|
|
||||||
|
QtNative.terminateQt();
|
||||||
|
QtNative.setActivity(null,null);
|
||||||
|
System.exit(0);
|
||||||
}
|
}
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -506,7 +509,9 @@ public class QtActivity extends Activity {
|
||||||
super.onPause();
|
super.onPause();
|
||||||
// GC: this trick allow us to show a splash activity until Qt app finishes
|
// GC: this trick allow us to show a splash activity until Qt app finishes
|
||||||
// loading
|
// loading
|
||||||
QtApplication.invokeDelegate();
|
//QtApplication.invokeDelegate();
|
||||||
|
|
||||||
|
//TODO(Amer): looking into why this messes up pause.
|
||||||
}
|
}
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
|
@ -865,11 +865,6 @@ const AnimPoseVec& AnimInverseKinematics::evaluate(const AnimVariantMap& animVar
|
||||||
|
|
||||||
//virtual
|
//virtual
|
||||||
const AnimPoseVec& AnimInverseKinematics::overlay(const AnimVariantMap& animVars, const AnimContext& context, float dt, AnimVariantMap& triggersOut, const AnimPoseVec& underPoses) {
|
const AnimPoseVec& AnimInverseKinematics::overlay(const AnimVariantMap& animVars, const AnimContext& context, float dt, AnimVariantMap& triggersOut, const AnimPoseVec& underPoses) {
|
||||||
#ifdef Q_OS_ANDROID
|
|
||||||
// disable IK on android
|
|
||||||
return underPoses;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// allows solutionSource to be overridden by an animVar
|
// allows solutionSource to be overridden by an animVar
|
||||||
auto solutionSource = animVars.lookup(_solutionSourceVar, (int)_solutionSource);
|
auto solutionSource = animVars.lookup(_solutionSourceVar, (int)_solutionSource);
|
||||||
|
|
||||||
|
|
|
@ -315,10 +315,6 @@ JNIEXPORT void JNICALL Java_io_highfidelity_oculus_OculusMobileActivity_nativeOn
|
||||||
SURFACE.onCreate(env, obj);
|
SURFACE.onCreate(env, obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_io_highfidelity_oculus_OculusMobileActivity_nativeOnDestroy(JNIEnv*, jclass) {
|
|
||||||
__android_log_write(ANDROID_LOG_WARN, "QQQ_JNI", __FUNCTION__);
|
|
||||||
}
|
|
||||||
|
|
||||||
JNIEXPORT void JNICALL Java_io_highfidelity_oculus_OculusMobileActivity_nativeOnResume(JNIEnv*, jclass) {
|
JNIEXPORT void JNICALL Java_io_highfidelity_oculus_OculusMobileActivity_nativeOnResume(JNIEnv*, jclass) {
|
||||||
__android_log_write(ANDROID_LOG_WARN, "QQQ_JNI", __FUNCTION__);
|
__android_log_write(ANDROID_LOG_WARN, "QQQ_JNI", __FUNCTION__);
|
||||||
SURFACE.setResumed(true);
|
SURFACE.setResumed(true);
|
||||||
|
|
Loading…
Reference in a new issue