From ecabdb82e6e02adcd5256703984834e21cce85c8 Mon Sep 17 00:00:00 2001 From: Ameb Date: Sat, 28 Jul 2018 17:24:20 +0200 Subject: [PATCH] Introduce workaround for libgdx issue by @codegist libgdx/libgdx#3861 libgdx/libgdx#4626 libgdx/libgdx#5312 --- .../io/anuke/mindustry/AndroidLauncher.java | 3 +-- .../mindustry/PatchedAndroidApplication.java | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 android/src/io/anuke/mindustry/PatchedAndroidApplication.java diff --git a/android/src/io/anuke/mindustry/AndroidLauncher.java b/android/src/io/anuke/mindustry/AndroidLauncher.java index 0f6ab0924b..b75b32661e 100644 --- a/android/src/io/anuke/mindustry/AndroidLauncher.java +++ b/android/src/io/anuke/mindustry/AndroidLauncher.java @@ -12,7 +12,6 @@ import android.provider.Settings.Secure; import android.telephony.TelephonyManager; import android.util.Log; import com.badlogic.gdx.Gdx; -import com.badlogic.gdx.backends.android.AndroidApplication; import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration; import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.utils.Base64Coder; @@ -48,7 +47,7 @@ import java.util.Locale; import static io.anuke.mindustry.Vars.*; -public class AndroidLauncher extends AndroidApplication{ +public class AndroidLauncher extends PatchedAndroidApplication{ public static final int PERMISSION_REQUEST_CODE = 1; boolean doubleScaleTablets = true; diff --git a/android/src/io/anuke/mindustry/PatchedAndroidApplication.java b/android/src/io/anuke/mindustry/PatchedAndroidApplication.java new file mode 100644 index 0000000000..d3671e81ce --- /dev/null +++ b/android/src/io/anuke/mindustry/PatchedAndroidApplication.java @@ -0,0 +1,25 @@ +package io.anuke.mindustry; + +import com.badlogic.gdx.backends.android.AndroidApplication; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +public class PatchedAndroidApplication extends AndroidApplication { + + private final ExecutorService exec = Executors.newSingleThreadExecutor(); + private final Runnable forcePause = new Runnable() { + @Override + public void run() { + try {Thread.sleep(100);} catch (InterruptedException e) {} + graphics.onDrawFrame(null); + } + }; + + @Override + protected void onPause () { + if(useImmersiveMode) { + exec.submit(forcePause); + } + super.onPause(); + } +} \ No newline at end of file