From 1999dfe5c0f3434d329c03e781d46a1c79d2c470 Mon Sep 17 00:00:00 2001 From: draxdyn Date: Wed, 1 Jun 2016 19:32:49 +0200 Subject: [PATCH] Add mechanism to register image caches and flush them all on GUI size change This should avoid the issue of having lots of unused entries in caches if the GUI size is changed multiple times. --- .../src/main/java/mage/client/MageFrame.java | 2 ++ .../java/mage/client/util/ImageCaches.java | 34 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 Mage.Client/src/main/java/mage/client/util/ImageCaches.java diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java index c36056dace8..983db1f369d 100644 --- a/Mage.Client/src/main/java/mage/client/MageFrame.java +++ b/Mage.Client/src/main/java/mage/client/MageFrame.java @@ -116,6 +116,7 @@ import mage.client.table.TablesPane; import mage.client.tournament.TournamentPane; import mage.client.util.EDTExceptionHandler; import mage.client.util.GUISizeHelper; +import mage.client.util.ImageCaches; import mage.client.util.SettingsManager; import mage.client.util.SystemUtil; import mage.client.util.audio.MusicPlayer; @@ -1455,6 +1456,7 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { } public void changeGUISize() { + ImageCaches.flush(); setGUISize(); Plugins.getInstance().changeGUISize(); CountryUtil.changeGUISize(); diff --git a/Mage.Client/src/main/java/mage/client/util/ImageCaches.java b/Mage.Client/src/main/java/mage/client/util/ImageCaches.java new file mode 100644 index 00000000000..2cb045c4d04 --- /dev/null +++ b/Mage.Client/src/main/java/mage/client/util/ImageCaches.java @@ -0,0 +1,34 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package mage.client.util; + +import java.util.Map; +import java.util.Vector; + +/** + * + * @author user + */ +public class ImageCaches { + private static Vector IMAGE_CACHES; + + static { + IMAGE_CACHES = new Vector(); + } + + public static Map register(Map map) + { + IMAGE_CACHES.add(map); + return map; + } + + public static void flush() + { + for (Map map : IMAGE_CACHES) { + map.clear(); + } + } +}