Cache image data instead of SWT images, in order to avoid conflicts
authorMathieu Baudier <mbaudier@argeo.org>
Mon, 3 May 2021 09:57:49 +0000 (11:57 +0200)
committerMathieu Baudier <mbaudier@argeo.org>
Mon, 3 May 2021 09:57:49 +0000 (11:57 +0200)
between multiple apps.

org.argeo.cms.ui/src/org/argeo/cms/ui/util/AbstractCmsTheme.java

index 5ec931e71920b66a9ee1071165eb267ffa80df86..c3fd7960d146296331bcae3daf91402736eed43c 100644 (file)
@@ -12,7 +12,7 @@ import org.eclipse.swt.widgets.Display;
 
 /** Centralises some generic {@link CmsTheme} patterns. */
 public abstract class AbstractCmsTheme implements CmsTheme {
-       private Map<String, Image> imageCache = new HashMap<>();
+       private Map<String, ImageData> imageCache = new HashMap<>();
 
        private Map<String, Map<Integer, String>> iconPaths = new HashMap<>();
 
@@ -24,13 +24,14 @@ public abstract class AbstractCmsTheme implements CmsTheme {
                                if (in == null)
                                        return null;
                                ImageData imageData = new ImageData(in);
-                               Image image = new Image(Display.getDefault(), imageData);
-                               imageCache.put(path, image);
+                               imageCache.put(path, imageData);
                        } catch (IOException e) {
                                throw new IllegalStateException(e);
                        }
                }
-               return imageCache.get(path);
+               ImageData imageData = imageCache.get(path);
+               Image image = new Image(Display.getCurrent(), imageData);
+               return image;
        }
 
        @Override