diff options
Diffstat (limited to 'src/share/classes/javax/swing/plaf/synth/SynthContext.java')
-rw-r--r-- | src/share/classes/javax/swing/plaf/synth/SynthContext.java | 46 |
1 files changed, 10 insertions, 36 deletions
diff --git a/src/share/classes/javax/swing/plaf/synth/SynthContext.java b/src/share/classes/javax/swing/plaf/synth/SynthContext.java index 6d89a4a06..64b6e536f 100644 --- a/src/share/classes/javax/swing/plaf/synth/SynthContext.java +++ b/src/share/classes/javax/swing/plaf/synth/SynthContext.java @@ -24,8 +24,9 @@ */ package javax.swing.plaf.synth; -import javax.swing.*; -import java.util.*; +import java.util.Queue; +import java.util.concurrent.ConcurrentLinkedQueue; +import javax.swing.JComponent; /** * An immutable transient object containing contextual information about @@ -39,59 +40,32 @@ import java.util.*; * @author Scott Violet */ public class SynthContext { - private static final Map<Class, List<SynthContext>> contextMap; + private static final Queue<SynthContext> queue = new ConcurrentLinkedQueue<>(); private JComponent component; private Region region; private SynthStyle style; private int state; - - static { - contextMap = new HashMap<Class, List<SynthContext>>(); + static SynthContext getContext(JComponent c, SynthStyle style, int state) { + return getContext(c, SynthLookAndFeel.getRegion(c), style, state); } - - static SynthContext getContext(Class type, JComponent component, + static SynthContext getContext(JComponent component, Region region, SynthStyle style, int state) { - SynthContext context = null; - - synchronized(contextMap) { - List<SynthContext> instances = contextMap.get(type); - - if (instances != null) { - int size = instances.size(); - - if (size > 0) { - context = instances.remove(size - 1); - } - } - } + SynthContext context = queue.poll(); if (context == null) { - try { - context = (SynthContext)type.newInstance(); - } catch (IllegalAccessException iae) { - } catch (InstantiationException ie) { - } + context = new SynthContext(); } context.reset(component, region, style, state); return context; } static void releaseContext(SynthContext context) { - synchronized(contextMap) { - List<SynthContext> instances = contextMap.get(context.getClass()); - - if (instances == null) { - instances = new ArrayList<SynthContext>(5); - contextMap.put(context.getClass(), instances); - } - instances.add(context); - } + queue.offer(context); } - SynthContext() { } |