From 5c2f3ddf853343b965e67888da94a9d72a2b7345 Mon Sep 17 00:00:00 2001 From: drdev Date: Wed, 28 May 2014 00:28:40 +0000 Subject: [PATCH] Fix so downloader doesn't cause infinite loop --- forge-gui-mobile/src/forge/Forge.java | 4 ++-- forge-gui/src/main/java/forge/FThreads.java | 7 +++++++ .../src/main/java/forge/download/GuiDownloadService.java | 7 +++---- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/forge-gui-mobile/src/forge/Forge.java b/forge-gui-mobile/src/forge/Forge.java index d7c3e4d38c3..3d213466be1 100644 --- a/forge-gui-mobile/src/forge/Forge.java +++ b/forge-gui-mobile/src/forge/Forge.java @@ -74,7 +74,7 @@ public class Forge implements ApplicationListener { splashScreen = new SplashScreen(); //load model on background thread (using progress bar to report progress) - new Thread(new Runnable() { + FThreads.invokeInBackgroundThread(new Runnable() { @Override public void run() { FModel.initialize(splashScreen.getProgressBar()); @@ -91,7 +91,7 @@ public class Forge implements ApplicationListener { } }); } - }, "Game Startup").start(); //use thread name that starts with "Game" so GuiMobile.isGuiThread() returns false + }); } private void afterDbLoaded() { diff --git a/forge-gui/src/main/java/forge/FThreads.java b/forge-gui/src/main/java/forge/FThreads.java index 980a0996c4c..686d4787d38 100644 --- a/forge-gui/src/main/java/forge/FThreads.java +++ b/forge-gui/src/main/java/forge/FThreads.java @@ -53,6 +53,13 @@ public class FThreads { GuiBase.getInterface().invokeInEdtAndWait(proc); } + private static int backgroundThreadCount; + public static void invokeInBackgroundThread(final Runnable proc) { + //start thread name with "Game" so isGuiThread() returns false on GuiMobile + new Thread(proc, "Game BT" + backgroundThreadCount).start(); + backgroundThreadCount++; + } + public static boolean isGuiThread() { return GuiBase.getInterface().isGuiThread(); } diff --git a/forge-gui/src/main/java/forge/download/GuiDownloadService.java b/forge-gui/src/main/java/forge/download/GuiDownloadService.java index 3ff03907232..10f56fbb6d2 100644 --- a/forge-gui/src/main/java/forge/download/GuiDownloadService.java +++ b/forge-gui/src/main/java/forge/download/GuiDownloadService.java @@ -28,7 +28,6 @@ import forge.interfaces.IProgressBar; import forge.interfaces.ITextField; import forge.util.FileUtil; import forge.util.MyRandom; -import forge.util.ThreadUtil; import org.apache.commons.lang3.tuple.Pair; @@ -60,7 +59,7 @@ public abstract class GuiDownloadService implements Runnable { public void run() { //invalidate image cache so newly downloaded images will be loaded GuiBase.getInterface().clearImageCache(); - ThreadUtil.invokeInGameThread(this); + FThreads.invokeInBackgroundThread(GuiDownloadService.this); btnStart.setEnabled(false); } }; @@ -87,8 +86,8 @@ public abstract class GuiDownloadService implements Runnable { cmdClose = cmdClose0; onUpdate = onUpdate0; - // Free up the EDT by assembling card list on the game thread - ThreadUtil.invokeInGameThread(new Runnable() { + // Free up the EDT by assembling card list on a background thread + FThreads.invokeInBackgroundThread(new Runnable() { @Override public void run() { try {