aboutsummaryrefslogtreecommitdiff
path: root/src/share/classes/javax/swing/plaf/synth/SynthContext.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/share/classes/javax/swing/plaf/synth/SynthContext.java')
-rw-r--r--src/share/classes/javax/swing/plaf/synth/SynthContext.java46
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() {
}