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:
Sam Gateau 2019-02-14 17:19:19 -08:00 committed by GitHub
commit 0d6bf79139
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 26 additions and 46 deletions

View file

@ -36,7 +36,6 @@ public class QuestQtActivity extends QtActivity {
public void launchOculusActivity() {
Log.w("QQQ_Qt", "QuestQtActivity::launchOculusActivity");
runOnUiThread(()->{
keepInterfaceRunning = true;
launchedQuestMode = true;
moveTaskToBack(true);
startActivity(new Intent(this, QuestRenderActivity.class));

View file

@ -62,6 +62,7 @@ extern "C" {
initOculusPlatform(env, obj);
}
QAndroidJniObject __interfaceActivity;
JNIEXPORT void JNICALL
Java_io_highfidelity_oculus_OculusMobileActivity_questNativeOnCreate(JNIEnv *env, jobject obj) {
__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());
}
JNIEXPORT void JNICALL
Java_io_highfidelity_oculus_OculusMobileActivity_questNativeOnDestroy(JNIEnv *env, jobject obj) {
}
JNIEXPORT void JNICALL
Java_io_highfidelity_oculus_OculusMobileActivity_questNativeOnPause(JNIEnv *env, jobject obj) {
AndroidHelper::instance().notifyEnterBackground();

View file

@ -7,21 +7,13 @@
//
package io.highfidelity.oculus;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.WindowManager;
import android.widget.LinearLayout;
import org.qtproject.qt5.android.bindings.QtActivity;
import io.highfidelity.utils.HifiUtils;
/**
@ -35,11 +27,9 @@ public class OculusMobileActivity extends QtActivity implements SurfaceHolder.Ca
private native void nativeOnCreate();
private native static void nativeOnResume();
private native static void nativeOnPause();
private native static void nativeOnDestroy();
private native static void nativeOnSurfaceChanged(Surface s);
private native void questNativeOnCreate();
private native void questNativeOnDestroy();
private native void questNativeOnPause();
private native void questNativeOnResume();
private native void questOnAppAfterLoad();
@ -48,10 +38,7 @@ public class OculusMobileActivity extends QtActivity implements SurfaceHolder.Ca
private SurfaceView mView;
private SurfaceHolder mSurfaceHolder;
boolean isLoading =false;
public void onCreate(Bundle savedInstanceState) {
isLoading=true;
super.onCreate(savedInstanceState);
HifiUtils.upackAssets(getAssets(), getCacheDir().getAbsolutePath());
@ -65,14 +52,10 @@ public class OculusMobileActivity extends QtActivity implements SurfaceHolder.Ca
nativeOnCreate();
questNativeOnCreate();
}
public void onAppLoadedComplete() {
Log.w(TAG, "QQQ Load Completed");
isLoading=false;
//isLoading=false;
runOnUiThread(() -> {
setContentView(mView); setContentView(mView);
setContentView(mView);
questOnAppAfterLoad();
});
}
@ -80,23 +63,22 @@ public class OculusMobileActivity extends QtActivity implements SurfaceHolder.Ca
@Override
protected void onDestroy() {
Log.w(TAG, "QQQ onDestroy");
super.onDestroy();
if (mSurfaceHolder != null) {
nativeOnSurfaceChanged(null);
}
nativeOnDestroy();
questNativeOnDestroy();
nativeOnSurfaceChanged(null);
Log.w(TAG, "QQQ onDestroy -- SUPER onDestroy");
super.onDestroy();
}
@Override
protected void onResume() {
Log.w(TAG, "QQQ onResume");
super.onResume();
//Reconnect the global reference back to handler
nativeOnCreate();
questNativeOnResume();
nativeOnResume();
}
@Override
@ -104,16 +86,21 @@ public class OculusMobileActivity extends QtActivity implements SurfaceHolder.Ca
Log.w(TAG, "QQQ onPause");
super.onPause();
if (!isLoading) {
questNativeOnPause();
nativeOnPause();
}
questNativeOnPause();
nativeOnPause();
}
@Override
protected void onStop(){
super.onStop();
Log.w(TAG, "QQQ Onstop called");
}
@Override
protected void onRestart(){
super.onRestart();
nativeOnCreate();
Log.w(TAG, "QQQ onRestart called ****");
questOnAppAfterLoad();
}
@Override
@ -135,5 +122,6 @@ public class OculusMobileActivity extends QtActivity implements SurfaceHolder.Ca
Log.w(TAG, "QQQ surfaceDestroyed ***************************************************");
nativeOnSurfaceChanged(null);
mSurfaceHolder = null;
}
}

View file

@ -364,7 +364,10 @@ public class QtActivity extends Activity {
@Override
protected void 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();
// GC: this trick allow us to show a splash activity until Qt app finishes
// loading
QtApplication.invokeDelegate();
//QtApplication.invokeDelegate();
//TODO(Amer): looking into why this messes up pause.
}
//---------------------------------------------------------------------------

View file

@ -865,11 +865,6 @@ const AnimPoseVec& AnimInverseKinematics::evaluate(const AnimVariantMap& animVar
//virtual
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
auto solutionSource = animVars.lookup(_solutionSourceVar, (int)_solutionSource);

View file

@ -315,10 +315,6 @@ JNIEXPORT void JNICALL Java_io_highfidelity_oculus_OculusMobileActivity_nativeOn
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) {
__android_log_write(ANDROID_LOG_WARN, "QQQ_JNI", __FUNCTION__);
SURFACE.setResumed(true);