diff --git a/app/src/main/java/net/kdt/pojavlaunch/AWTCanvasView.java b/app/src/main/java/net/kdt/pojavlaunch/AWTCanvasView.java index d1e8700e3..f0a8b6aa7 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/AWTCanvasView.java +++ b/app/src/main/java/net/kdt/pojavlaunch/AWTCanvasView.java @@ -91,7 +91,7 @@ public class AWTCanvasView extends TextureView implements TextureView.SurfaceTex if (attached) { drawing = JREUtils.renderAWTScreenFrame(canvas, mWidth, mHeight); } - canvas.drawText("FPS: " + fps() + ", attached=" + attached + ", drawing=" + drawing, 50, 50, fpsPaint); + canvas.drawText("FPS: " + (Math.round(fps() * 10) / 10) + ", attached=" + attached + ", drawing=" + drawing, 50, 50, fpsPaint); mSurface.unlockCanvasAndPost(canvas); } catch (Throwable th) { diff --git a/app/src/main/jni/awt_bridge.c b/app/src/main/jni/awt_bridge.c index 6b6444f1c..9afa836b2 100644 --- a/app/src/main/jni/awt_bridge.c +++ b/app/src/main/jni/awt_bridge.c @@ -8,7 +8,10 @@ // TODO: check for memory leaks int printed = 0; JNIEXPORT jboolean JNICALL Java_net_kdt_pojavlaunch_JREUtils_renderAWTScreenFrame(JNIEnv* env, jclass clazz, jobject canvas, jint width, jint height) { - if (runtimeJNIEnvPtr_ANDROID == NULL) return JNI_FALSE; + if (runtimeJNIEnvPtr_ANDROID == NULL) { + if (runtimeJavaVMPtr == NULL) return JNI_FALSE; + (*runtimeJavaVMPtr)->AttachCurrentThread(runtimeJavaVMPtr, &runtimeJNIEnvPtr_ANDROID, NULL); + } int *rgbArray; jintArray jreRgbArray, androidRgbArray; diff --git a/app/src/main/jni/input_bridge_v3.c b/app/src/main/jni/input_bridge_v3.c index 28740e870..6a0babb39 100644 --- a/app/src/main/jni/input_bridge_v3.c +++ b/app/src/main/jni/input_bridge_v3.c @@ -55,6 +55,9 @@ void JNI_OnUnload(JavaVM* vm, void* reserved) { DetachCurrentThread(vm); */ + + androidJNIEnvPtr_JRE = NULL; + runtimeJNIEnvPtr_ANDROID = NULL; } #define ADD_CALLBACK_WWIN(NAME) \