diff --git a/app/src/main/java/net/kdt/pojavlaunch/InstallModActivity.java b/app/src/main/java/net/kdt/pojavlaunch/InstallModActivity.java index 6d1497ec5..6d6b1bba8 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/InstallModActivity.java +++ b/app/src/main/java/net/kdt/pojavlaunch/InstallModActivity.java @@ -37,7 +37,7 @@ public class InstallModActivity extends AppCompatActivity @Override public void run() { launchJavaRuntime(modFile); - finish(); + // finish(); } }).start(); } @@ -99,7 +99,7 @@ public class InstallModActivity extends AppCompatActivity JREUtils.setJavaEnvironment(this); - JREUtils.redirectStdio(); + JREUtils.redirectStdio(false); JREUtils.setJavaEnvironment(this); JREUtils.initJavaRuntime(); JREUtils.chdir(Tools.MAIN_PATH); diff --git a/app/src/main/java/net/kdt/pojavlaunch/JREUtils.java b/app/src/main/java/net/kdt/pojavlaunch/JREUtils.java index d2915d25e..90ce44672 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/JREUtils.java +++ b/app/src/main/java/net/kdt/pojavlaunch/JREUtils.java @@ -19,8 +19,8 @@ public class JREUtils dlopen(Tools.homeJreDir + "/lib/libawt_headless.so"); } - public static File redirectStdio() throws ErrnoException { - File logFile = new File(Tools.datapath, "currentlog.txt"); + public static File redirectStdio(boolean current) throws ErrnoException { + File logFile = new File(Tools.datapath, (current ? "current" : "latest") + "log.txt"); FileDescriptor fd = Os.open(logFile.getAbsolutePath(), OsConstants.O_WRONLY | OsConstants.O_CREAT | OsConstants.O_TRUNC, 0666); Os.dup2(fd, OsConstants.STDERR_FILENO); diff --git a/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java b/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java index 0db2f63e5..b85d88a3c 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java +++ b/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java @@ -837,7 +837,7 @@ public class MainActivity extends AppCompatActivity implements OnTouchListener, private FileObserver mLogObserver; private void runCraft() throws Throwable { if (Tools.LAUNCH_TYPE != Tools.LTYPE_PROCESS) { - final File currLogFile = JREUtils.redirectStdio(); + final File currLogFile = JREUtils.redirectStdio(false); // DEPRECATED constructor (String) api 29 mLogObserver = new FileObserver(currLogFile.getAbsolutePath(), FileObserver.MODIFY){ @Override diff --git a/app/src/main/java/net/kdt/pojavlaunch/NativeMainActivity.java b/app/src/main/java/net/kdt/pojavlaunch/NativeMainActivity.java index 095c062c7..dc8743b40 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/NativeMainActivity.java +++ b/app/src/main/java/net/kdt/pojavlaunch/NativeMainActivity.java @@ -2,12 +2,38 @@ package net.kdt.pojavlaunch; import android.app.*; import android.os.*; +import android.view.*; // This is for test only! public class NativeMainActivity extends NativeActivity { + private MCProfile.Builder mProfile; + private JMinecraftVersionList.Version mVersionInfo; + @Override public void onCreate(Bundle b) { super.onCreate(b); + + mProfile = PojavProfile.getCurrentProfileContent(this); + mVersionInfo = Tools.getVersionInfo(mProfile.getVersion()); + } + + @Override + public void surfaceCreated(SurfaceHolder holder) + { + super.surfaceCreated(holder); + + new Thread() { + @Override + public void run() { + try { + JREUtils.redirectStdio(false); + + Tools.launchMinecraft(NativeMainActivity.this, mProfile, mVersionInfo); + } catch (Throwable th) { + Tools.showError(NativeMainActivity.this, th, true); + } + } + }.start(); } } diff --git a/app/src/main/java/net/kdt/pojavlaunch/Tools.java b/app/src/main/java/net/kdt/pojavlaunch/Tools.java index 21d823d6a..6a40fc467 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/Tools.java +++ b/app/src/main/java/net/kdt/pojavlaunch/Tools.java @@ -72,7 +72,7 @@ public final class Tools public static final int LAUNCH_TYPE = LTYPE_INVOCATION; public static ShellProcessOperation mLaunchShell; - public static void launchMinecraft(Activity ctx, MCProfile.Builder profile, JMinecraftVersionList.Version versionInfo) throws Throwable { + public static void launchMinecraft(final Activity ctx, MCProfile.Builder profile, JMinecraftVersionList.Version versionInfo) throws Throwable { String[] launchArgs = getMinecraftArgs(profile, versionInfo); List javaArgList = new ArrayList(); @@ -186,6 +186,21 @@ public final class Tools VMLauncher.launchJVM(javaArgList.toArray(new String[0])); } } + + ctx.runOnUiThread(new Runnable(){ + @Override + public void run() { + AlertDialog.Builder dialog = new AlertDialog.Builder(ctx); + dialog.setMessage(R.string.mcn_javaexit_title); + dialog.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener(){ + + @Override + public void onClick(DialogInterface p1, int p2){ + ctx.finish(); + } + }); + } + }); } public static String[] getMinecraftArgs(MCProfile.Builder profile, JMinecraftVersionList.Version versionInfo) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a3bf41737..507c2e018 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -145,6 +145,7 @@ --> + Application exited Game exited Exit Game Crash detected! Click OK to exit.