From 0451b78e04d730b905011ef3949d944148dd1a79 Mon Sep 17 00:00:00 2001 From: ArtDev <45949002+artdeell@users.noreply.github.com> Date: Fri, 11 Dec 2020 16:59:48 +0300 Subject: [PATCH 1/2] Terminate launcher when user closes the JVM window --- app/src/main/jni/input_bridge_v3.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/src/main/jni/input_bridge_v3.c b/app/src/main/jni/input_bridge_v3.c index a0894a3d4..cbea4710f 100644 --- a/app/src/main/jni/input_bridge_v3.c +++ b/app/src/main/jni/input_bridge_v3.c @@ -139,6 +139,7 @@ void sendData(int type, int i1, int i2, int i3, int i4) { } void closeGLFWWindow() { + /* jclass glfwClazz = (*runtimeJNIEnvPtr_JRE)->FindClass(runtimeJNIEnvPtr_JRE, "org/lwjgl/glfw/GLFW"); assert(glfwClazz != NULL); jmethodID glfwMethod = (*runtimeJNIEnvPtr_JRE)->GetStaticMethodID(runtimeJNIEnvPtr_JRE, glfwMethod, "glfwSetWindowShouldClose", "(JZ)V"); @@ -149,6 +150,8 @@ void closeGLFWWindow() { glfwClazz, glfwMethod, (jlong) showingWindow, JNI_TRUE ); + */ + exit(-1); } JNIEXPORT jboolean JNICALL Java_org_lwjgl_glfw_CallbackBridge_nativeAttachThreadToOther(JNIEnv* env, jclass clazz, jboolean isAndroid, jboolean isUseStackQueueBool) { From f078673ac04a886c367306f2abc640e8263ab0ef Mon Sep 17 00:00:00 2001 From: artdeell Date: Fri, 11 Dec 2020 19:16:24 +0300 Subject: [PATCH 2/2] Add progress reporter for libraries --- .../main/java/net/kdt/pojavlaunch/Tools.java | 22 +++++++++- .../tasks/MinecraftDownloaderTask.java | 44 ++++++++++++++----- 2 files changed, 54 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/net/kdt/pojavlaunch/Tools.java b/app/src/main/java/net/kdt/pojavlaunch/Tools.java index 24ebada7a..32b66422b 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/Tools.java +++ b/app/src/main/java/net/kdt/pojavlaunch/Tools.java @@ -11,6 +11,8 @@ import com.google.gson.*; import com.oracle.dalvik.*; import java.io.*; import java.lang.reflect.*; +import java.net.HttpURLConnection; +import java.net.URL; import java.nio.charset.*; import java.util.*; import java.util.zip.*; @@ -669,7 +671,25 @@ public final class Tools File file = new File(nameOutput); DownloadUtils.downloadFile(urlInput, file); } - + public abstract static class DownloaderFeedback { + public abstract void updateProgress(int curr, int max); + } + public static void downloadFileMonitored(String urlInput,String nameOutput, DownloaderFeedback monitor) throws IOException { + if(!new File(nameOutput).exists()){ + new File(nameOutput).getParentFile().mkdirs(); + } + HttpURLConnection conn = (HttpURLConnection) new URL(urlInput).openConnection(); + InputStream readStr = conn.getInputStream(); + FileOutputStream fos = new FileOutputStream(new File(nameOutput)); + int cur = 0; int oval=0; int len = conn.getContentLength(); byte[] buf = new byte[65535]; + while((cur = readStr.read(buf)) != -1) { + oval += cur; + fos.write(buf,0,cur); + monitor.updateProgress(oval,len); + } + fos.close(); + conn.disconnect(); + } public static class ZipTool { private ZipTool(){} diff --git a/app/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java b/app/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java index d18ce5889..10c60150a 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java +++ b/app/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java @@ -18,7 +18,7 @@ public class MinecraftDownloaderTask extends AsyncTask