< prev index next >
src/java.desktop/share/classes/sun/java2d/marlin/RendererContext.java
Print this page
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
@@ -24,52 +24,49 @@
*/
package sun.java2d.marlin;
import java.awt.geom.Path2D;
-import java.lang.ref.SoftReference;
import java.lang.ref.WeakReference;
import java.util.concurrent.atomic.AtomicInteger;
+import sun.java2d.ReentrantContext;
+import sun.java2d.ReentrantContextProvider;
import static sun.java2d.marlin.ArrayCache.*;
import sun.java2d.marlin.MarlinRenderingEngine.NormalizingPathIterator;
import static sun.java2d.marlin.MarlinUtils.logInfo;
/**
* This class is a renderer context dedicated to a single thread
*/
-final class RendererContext implements MarlinConst {
+final class RendererContext extends ReentrantContext implements MarlinConst {
// RendererContext creation counter
private static final AtomicInteger contextCount = new AtomicInteger(1);
// RendererContext statistics
static final RendererStats stats = (doStats || doMonitors)
? RendererStats.getInstance(): null;
private static final boolean USE_CACHE_HARD_REF = doStats
- || (MarlinRenderingEngine.REF_TYPE == MarlinRenderingEngine.REF_WEAK);
+ || (MarlinRenderingEngine.REF_TYPE == ReentrantContextProvider.REF_WEAK);
/**
* Create a new renderer context
*
* @return new RendererContext instance
*/
static RendererContext createContext() {
final RendererContext newCtx = new RendererContext("ctx"
+ Integer.toString(contextCount.getAndIncrement()));
+
if (RendererContext.stats != null) {
RendererContext.stats.allContexts.add(newCtx);
}
return newCtx;
}
// context name (debugging purposes)
final String name;
- /*
- * Reference to this instance (hard, soft or weak).
- * @see MarlinRenderingEngine#REF_TYPE
- */
- final Object reference;
// Smallest object used as Cleaner's parent reference
final Object cleanerObj = new Object();
// dirty flag indicating an exception occured during pipeline in pathTo()
boolean dirty = false;
// dynamic array caches kept using weak reference (low memory footprint)
@@ -99,11 +96,11 @@
int stroking = 0;
/**
* Constructor
*
- * @param name
+ * @param name context name (debugging)
*/
RendererContext(final String name) {
if (logCreateContext) {
MarlinUtils.logInfo("new RendererContext = " + name);
}
@@ -122,24 +119,10 @@
renderer = new Renderer(this); // needs MarlinCache from rdrCtx.cache
ptg = new MarlinTileGenerator(renderer);
stroker = new Stroker(this);
dasher = new Dasher(this);
-
- // Create the reference to this instance (hard, soft or weak):
- switch (MarlinRenderingEngine.REF_TYPE) {
- default:
- case MarlinRenderingEngine.REF_HARD:
- reference = this;
- break;
- case MarlinRenderingEngine.REF_SOFT:
- reference = new SoftReference<RendererContext>(this);
- break;
- case MarlinRenderingEngine.REF_WEAK:
- reference = new WeakReference<RendererContext>(this);
- break;
- }
}
/**
* Disposes this renderer context:
* clean up before reusing this context
< prev index next >