From de74c9e62dc8dc52beea075747d7aaecd411094e Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Wed, 3 Nov 2021 15:50:07 +0800 Subject: [PATCH] Minor Performance - Clear image cache if necessary (prevent clearing if the downloaded data is not image) - Cache missing cards (prevent finding missing cards unless the user has fetched/downloads an image) - Clear preselected options for New Gauntlet Match (easier to filter decks for Gauntlet) --- forge-core/src/main/java/forge/ImageKeys.java | 9 +++++++++ forge-gui-desktop/src/main/java/forge/GuiDesktop.java | 1 + forge-gui-desktop/src/main/java/forge/ImageCache.java | 1 + forge-gui-mobile/src/forge/GuiMobile.java | 1 + forge-gui-mobile/src/forge/assets/ImageCache.java | 1 + .../src/forge/screens/gauntlet/NewGauntletScreen.java | 2 +- .../main/java/forge/gui/download/GuiDownloadService.java | 5 ++++- 7 files changed, 18 insertions(+), 2 deletions(-) diff --git a/forge-core/src/main/java/forge/ImageKeys.java b/forge-core/src/main/java/forge/ImageKeys.java index f7d63c36aac..1fa0b022e94 100644 --- a/forge-core/src/main/java/forge/ImageKeys.java +++ b/forge-core/src/main/java/forge/ImageKeys.java @@ -66,6 +66,10 @@ public final class ImageKeys { } private static final Map cachedCards = new HashMap<>(50000); + private static HashSet missingCards = new HashSet<>(); + public static void clearMissingCards() { + missingCards.clear(); + } public static File getCachedCardsFile(String key) { return cachedCards.get(key); } @@ -101,6 +105,9 @@ public final class ImageKeys { dir = CACHE_CARD_PICS_DIR; } + if (missingCards.contains(filename)) + return null; + File cachedFile = cachedCards.get(filename); if (cachedFile != null) { return cachedFile; @@ -237,6 +244,8 @@ public final class ImageKeys { } // System.out.println("File not found, no image created: " + key); + //add missing cards + missingCards.add(filename); return null; } diff --git a/forge-gui-desktop/src/main/java/forge/GuiDesktop.java b/forge-gui-desktop/src/main/java/forge/GuiDesktop.java index ac666bbaff7..333b95d07f9 100644 --- a/forge-gui-desktop/src/main/java/forge/GuiDesktop.java +++ b/forge-gui-desktop/src/main/java/forge/GuiDesktop.java @@ -290,6 +290,7 @@ public class GuiDesktop implements IGuiBase { @Override public void clearImageCache() { ImageCache.clear(); + ImageKeys.clearMissingCards(); } @Override diff --git a/forge-gui-desktop/src/main/java/forge/ImageCache.java b/forge-gui-desktop/src/main/java/forge/ImageCache.java index a8ac38d505b..4763c6c67e1 100644 --- a/forge-gui-desktop/src/main/java/forge/ImageCache.java +++ b/forge-gui-desktop/src/main/java/forge/ImageCache.java @@ -96,6 +96,7 @@ public class ImageCache { public static void clear() { _CACHE.invalidateAll(); _missingIconKeys.clear(); + ImageKeys.clearMissingCards(); } /** diff --git a/forge-gui-mobile/src/forge/GuiMobile.java b/forge-gui-mobile/src/forge/GuiMobile.java index f04a3fcc76c..b4982774bd0 100644 --- a/forge-gui-mobile/src/forge/GuiMobile.java +++ b/forge-gui-mobile/src/forge/GuiMobile.java @@ -288,6 +288,7 @@ public class GuiMobile implements IGuiBase { @Override public void clearImageCache() { ImageCache.clear(); + ImageKeys.clearMissingCards(); } @Override diff --git a/forge-gui-mobile/src/forge/assets/ImageCache.java b/forge-gui-mobile/src/forge/assets/ImageCache.java index 270a9c87c09..3eba43c3327 100644 --- a/forge-gui-mobile/src/forge/assets/ImageCache.java +++ b/forge-gui-mobile/src/forge/assets/ImageCache.java @@ -113,6 +113,7 @@ public class ImageCache { public static void clear() { missingIconKeys.clear(); + ImageKeys.clearMissingCards(); } public static void disposeTexture(){ diff --git a/forge-gui-mobile/src/forge/screens/gauntlet/NewGauntletScreen.java b/forge-gui-mobile/src/forge/screens/gauntlet/NewGauntletScreen.java index f3df330f283..0876420dc22 100644 --- a/forge-gui-mobile/src/forge/screens/gauntlet/NewGauntletScreen.java +++ b/forge-gui-mobile/src/forge/screens/gauntlet/NewGauntletScreen.java @@ -113,7 +113,7 @@ public class NewGauntletScreen extends LaunchScreen { }); } }); - chooser.show(null, true); + chooser.show(null, false); /*setting selectMax to true will select all available option*/ } }); } diff --git a/forge-gui/src/main/java/forge/gui/download/GuiDownloadService.java b/forge-gui/src/main/java/forge/gui/download/GuiDownloadService.java index bf758acf2c1..e5b6bc050dd 100644 --- a/forge-gui/src/main/java/forge/gui/download/GuiDownloadService.java +++ b/forge-gui/src/main/java/forge/gui/download/GuiDownloadService.java @@ -63,12 +63,14 @@ public abstract class GuiDownloadService implements Runnable { private IButton btnStart; private UiCommand cmdClose; private Runnable onUpdate; + private boolean clearImageCache = false; private final UiCommand cmdStartDownload = new UiCommand() { @Override public void run() { //invalidate image cache so newly downloaded images will be loaded - GuiBase.getInterface().clearImageCache(); + if (clearImageCache) + GuiBase.getInterface().clearImageCache(); FThreads.invokeInBackgroundThread(GuiDownloadService.this); btnStart.setEnabled(false); } @@ -95,6 +97,7 @@ public abstract class GuiDownloadService implements Runnable { btnStart = btnStart0; cmdClose = cmdClose0; onUpdate = onUpdate0; + clearImageCache = txtAddress0.getText().contains(".jpg") || txtAddress0.getText().contains(".png"); String startOverrideDesc = getStartOverrideDesc(); if (startOverrideDesc == null) {