Fix checking for GuiThread on Android

This commit is contained in:
drdev
2014-05-26 22:55:44 +00:00
parent 5da8fcfc66
commit 84b5591612
4 changed files with 24 additions and 9 deletions

View File

@@ -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);
}
}

View File

@@ -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/");
}
}
}

View File

@@ -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<FScreen> screens = new Stack<FScreen>();
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

View File

@@ -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