From 6de1cae47837abc75b20fb540784c8d8f7445ff0 Mon Sep 17 00:00:00 2001 From: Aaron Culliney Date: Sun, 1 Nov 2015 19:26:34 -0800 Subject: [PATCH] Move nativeOnCreate back to proper position as first native call - This runs discovery of CPU family - This sets up native crash handling --- .../java/org/deadc0de/apple2ix/Apple2Activity.java | 14 ++++++++++---- .../java/org/deadc0de/apple2ix/Apple2View.java | 9 --------- Android/jni/jnihooks.c | 12 +++++++----- 3 files changed, 17 insertions(+), 18 deletions(-) diff --git a/Android/app/src/main/java/org/deadc0de/apple2ix/Apple2Activity.java b/Android/app/src/main/java/org/deadc0de/apple2ix/Apple2Activity.java index 8f01e2fa..a16317f2 100644 --- a/Android/app/src/main/java/org/deadc0de/apple2ix/Apple2Activity.java +++ b/Android/app/src/main/java/org/deadc0de/apple2ix/Apple2Activity.java @@ -87,12 +87,12 @@ public class Apple2Activity extends Activity { public final static long NATIVE_TOUCH_ASCII_MASK = 0xFF00L; public final static long NATIVE_TOUCH_SCANCODE_MASK = 0x00FFL; + private native void nativeOnCreate(String dataDir, int sampleRate, int monoBufferSize, int stereoBufferSize); + private native void nativeOnKeyDown(int keyCode, int metaState); private native void nativeOnKeyUp(int keyCode, int metaState); - private native void nativeEarlyLifecycleInit(); - public native void nativeEmulationResume(); public native void nativeEmulationPause(); @@ -139,11 +139,17 @@ public class Apple2Activity extends Activity { return; } + int sampleRate = DevicePropertyCalculator.getRecommendedSampleRate(this); + int monoBufferSize = DevicePropertyCalculator.getRecommendedBufferSize(this, /*isStereo:*/false); + int stereoBufferSize = DevicePropertyCalculator.getRecommendedBufferSize(this, /*isStereo:*/true); + Log.d(TAG, "Device sampleRate:" + sampleRate + " mono bufferSize:" + monoBufferSize + " stereo bufferSize:" + stereoBufferSize); + + String dataDir = Apple2DisksMenu.getDataDir(this); + nativeOnCreate(dataDir, sampleRate, monoBufferSize, stereoBufferSize); + showSplashScreen(); Apple2CrashHandler.getInstance().checkForCrashes(Apple2Activity.this); - nativeEarlyLifecycleInit(); - // first-time initializations #1 if (!Apple2Preferences.FIRST_TIME_CONFIGURED.booleanValue(this)) { Apple2DisksMenu.firstTime(this); diff --git a/Android/app/src/main/java/org/deadc0de/apple2ix/Apple2View.java b/Android/app/src/main/java/org/deadc0de/apple2ix/Apple2View.java index 9342a4bd..fc40604a 100644 --- a/Android/app/src/main/java/org/deadc0de/apple2ix/Apple2View.java +++ b/Android/app/src/main/java/org/deadc0de/apple2ix/Apple2View.java @@ -55,8 +55,6 @@ class Apple2View extends GLSurfaceView { private Apple2Activity mActivity = null; private AtomicBoolean mInitialLaunch = new AtomicBoolean(true); - private static native void nativeOnCreate(String dataDir, int sampleRate, int monoBufferSize, int stereoBufferSize); - private static native void nativeGraphicsInitialized(int width, int height); private static native void nativeGraphicsChanged(int width, int height); @@ -347,13 +345,6 @@ class Apple2View extends GLSurfaceView { height = w_; } - int sampleRate = DevicePropertyCalculator.getRecommendedSampleRate(Apple2View.this.mActivity); - int monoBufferSize = DevicePropertyCalculator.getRecommendedBufferSize(Apple2View.this.mActivity, /*isStereo:*/false); - int stereoBufferSize = DevicePropertyCalculator.getRecommendedBufferSize(Apple2View.this.mActivity, /*isStereo:*/true); - Log.d(TAG, "Device sampleRate:" + sampleRate + " mono bufferSize:" + monoBufferSize + " stereo bufferSize:" + stereoBufferSize); - - String dataDir = Apple2DisksMenu.getDataDir(Apple2View.this.mActivity); - nativeOnCreate(dataDir, sampleRate, monoBufferSize, stereoBufferSize); nativeGraphicsInitialized(width, height); // first-time initializations #2 diff --git a/Android/jni/jnihooks.c b/Android/jni/jnihooks.c index 7e507a9b..41d3c097 100644 --- a/Android/jni/jnihooks.c +++ b/Android/jni/jnihooks.c @@ -96,10 +96,7 @@ static inline int _androidTouchEvent2InterfaceEvent(jint action) { } } -// ---------------------------------------------------------------------------- -// JNI functions - -void Java_org_deadc0de_apple2ix_Apple2Activity_nativeEarlyLifecycleInit(JNIEnv *env, jobject obj) { +static void discover_cpu_family(void) { LOG("Discovering CPU family..."); AndroidCpuFamily family = android_getCpuFamily(); @@ -141,7 +138,10 @@ void Java_org_deadc0de_apple2ix_Apple2Activity_nativeEarlyLifecycleInit(JNIEnv * } } -void Java_org_deadc0de_apple2ix_Apple2View_nativeOnCreate(JNIEnv *env, jclass cls, jstring j_dataDir, jint sampleRate, jint monoBufferSize, jint stereoBufferSize) { +// ---------------------------------------------------------------------------- +// JNI functions + +void Java_org_deadc0de_apple2ix_Apple2Activity_nativeOnCreate(JNIEnv *env, jobject obj, jstring j_dataDir, jint sampleRate, jint monoBufferSize, jint stereoBufferSize) { const char *dataDir = (*env)->GetStringUTFChars(env, j_dataDir, 0); // Android lifecycle can call onCreate() multiple times... @@ -150,6 +150,8 @@ void Java_org_deadc0de_apple2ix_Apple2View_nativeOnCreate(JNIEnv *env, jclass cl return; } + discover_cpu_family(); + // Do not remove this deadc0de ... it forces a runtime load-library/link error on Gingerbread devices if we have // incorrectly compiled the app against a later version of the NDK!!! int pagesize = getpagesize();