diff --git a/forge-gui-android/src/forge/app/Main.java b/forge-gui-android/src/forge/app/Main.java index 0771593e487..cc47084c209 100644 --- a/forge-gui-android/src/forge/app/Main.java +++ b/forge-gui-android/src/forge/app/Main.java @@ -4,6 +4,7 @@ import android.content.pm.ActivityInfo; import android.os.Build; import android.os.Bundle; import android.os.Environment; +import android.os.Looper; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.backends.android.AndroidApplication; @@ -35,6 +36,8 @@ public class Main extends AndroidApplication { return; } - initialize(new Forge(getClipboard(), assetsDir), true); + Forge app = new Forge(); + app.initialize(Looper.getMainLooper().getThread(), getClipboard(), assetsDir); + initialize(app, true); } } diff --git a/forge-gui-mobile-dev/src/forge/app/Main.java b/forge-gui-mobile-dev/src/forge/app/Main.java index 9114b241f95..f881fe89e2f 100644 --- a/forge-gui-mobile-dev/src/forge/app/Main.java +++ b/forge-gui-mobile-dev/src/forge/app/Main.java @@ -8,6 +8,13 @@ import forge.util.Utils; public class Main { public static void main(String[] args) { - new LwjglApplication(new Forge(new LwjglClipboard(), "../forge-gui/"), "Forge", (int)Utils.BASE_WIDTH, (int)Utils.BASE_HEIGHT, true); + new ForgeApplication(new Forge()); + } + + private static class ForgeApplication extends LwjglApplication { + private ForgeApplication(Forge app) { + super(app, "Forge", (int)Utils.BASE_WIDTH, (int)Utils.BASE_HEIGHT, true); + app.initialize(mainLoopThread, new LwjglClipboard(), "../forge-gui/"); + } } } diff --git a/forge-gui-mobile/src/forge/Forge.java b/forge-gui-mobile/src/forge/Forge.java index 9ac30c4999f..568662d0b31 100644 --- a/forge-gui-mobile/src/forge/Forge.java +++ b/forge-gui-mobile/src/forge/Forge.java @@ -40,7 +40,7 @@ import forge.toolbox.FOverlay; import forge.util.Utils; public class Forge implements ApplicationListener { - private static Forge game; + private static boolean initialized; private static Clipboard clipboard; private static int screenWidth; private static int screenHeight; @@ -51,13 +51,16 @@ public class Forge implements ApplicationListener { private static KeyInputAdapter keyInputAdapter; private static final Stack screens = new Stack(); - public Forge(Clipboard clipboard0, String assetDir0) { - if (game != null) { + public Forge() { + } + + public void initialize(Thread guiThread, Clipboard clipboard0, String assetDir0) { + if (initialized) { throw new RuntimeException("Cannot initialize Forge more than once"); } - game = this; clipboard = clipboard0; - GuiBase.setInterface(new GuiMobile(assetDir0)); + GuiBase.setInterface(new GuiMobile(guiThread, assetDir0)); + initialized = true; } @Override diff --git a/forge-gui-mobile/src/forge/GuiMobile.java b/forge-gui-mobile/src/forge/GuiMobile.java index 5c5325d02d7..a7604f8e7de 100644 --- a/forge-gui-mobile/src/forge/GuiMobile.java +++ b/forge-gui-mobile/src/forge/GuiMobile.java @@ -51,8 +51,10 @@ import forge.util.WaitRunnable; import forge.util.gui.SGuiChoose; public class GuiMobile implements IGuiBase { + private final Thread guiThread; private final String assetsDir; - public GuiMobile(String assetsDir0) { + public GuiMobile(Thread guiThread0, String assetsDir0) { + guiThread = guiThread0; assetsDir = assetsDir0; } @@ -78,7 +80,7 @@ public class GuiMobile implements IGuiBase { @Override public boolean isGuiThread() { - return Thread.currentThread().getName().startsWith("LWJGL"); + return Thread.currentThread() == guiThread; } @Override