--- a/jdk/src/java.desktop/share/classes/sun/java2d/marlin/MarlinRenderingEngine.java Wed Jun 15 16:33:05 2016 +0530
+++ b/jdk/src/java.desktop/share/classes/sun/java2d/marlin/MarlinRenderingEngine.java Wed Jun 15 21:43:39 2016 +0200
@@ -85,7 +85,7 @@
int caps,
int join,
float miterlimit,
- float dashes[],
+ float[] dashes,
float dashphase)
{
final RendererContext rdrCtx = getRendererContext();
@@ -278,7 +278,7 @@
int caps,
int join,
float miterlimit,
- float dashes[],
+ float[] dashes,
float dashphase,
PathConsumer2D pc2d)
{
@@ -340,8 +340,8 @@
if (dashLen <= INITIAL_ARRAY) {
newDashes = rdrCtx.dasher.dashes_initial;
} else {
- if (doStats) {
- RendererContext.stats.stat_array_dasher_dasher
+ if (DO_STATS) {
+ rdrCtx.stats.stat_array_dasher_dasher
.add(dashLen);
}
newDashes = rdrCtx.getDirtyFloatArray(dashLen);
@@ -380,7 +380,7 @@
at = null;
}
- if (useSimplifier) {
+ if (USE_SIMPLIFIER) {
// Use simplifier after stroker before Renderer
// to remove collinear segments (notably due to cap square)
pc2d = rdrCtx.simplifier.init(pc2d);
@@ -474,9 +474,6 @@
@Override
public final int currentSegment(final float[] coords) {
- if (doMonitors) {
- RendererContext.stats.mon_npi_currentSegment.start();
- }
int lastCoord;
final int type = src.currentSegment(coords);
@@ -495,17 +492,11 @@
// we don't want to deal with this case later. We just exit now
curx_adjust = movx_adjust;
cury_adjust = movy_adjust;
-
- if (doMonitors) {
- RendererContext.stats.mon_npi_currentSegment.stop();
- }
return type;
default:
throw new InternalError("Unrecognized curve type");
}
- // TODO: handle NaN, Inf and overflow
-
// normalize endpoint
float coord, x_adjust, y_adjust;
@@ -543,10 +534,6 @@
}
curx_adjust = x_adjust;
cury_adjust = y_adjust;
-
- if (doMonitors) {
- RendererContext.stats.mon_npi_currentSegment.stop();
- }
return type;
}
@@ -790,7 +777,7 @@
BasicStroke bs,
boolean thin,
boolean normalize,
- int bbox[])
+ int[] bbox)
{
MarlinTileGenerator ptg = null;
Renderer r = null;
@@ -808,6 +795,7 @@
final PathIterator pi = getNormalizingPathIterator(rdrCtx, norm,
s.getPathIterator(_at));
+ // note: Winding rule may be EvenOdd ONLY for fill operations !
r = rdrCtx.renderer.init(clip.getLoX(), clip.getLoY(),
clip.getWidth(), clip.getHeight(),
pi.getWindingRule());
@@ -848,7 +836,7 @@
double dx2, double dy2,
double lw1, double lw2,
Region clip,
- int bbox[])
+ int[] bbox)
{
// REMIND: Deal with large coordinates!
double ldx1, ldy1, ldx2, ldy2;
@@ -949,17 +937,17 @@
// --- RendererContext handling ---
// use ThreadLocal or ConcurrentLinkedQueue to get one RendererContext
- private static final boolean useThreadLocal;
+ private static final boolean USE_THREAD_LOCAL;
// reference type stored in either TL or CLQ
static final int REF_TYPE;
// Per-thread RendererContext
- private static final ReentrantContextProvider<RendererContext> rdrCtxProvider;
+ private static final ReentrantContextProvider<RendererContext> RDR_CTX_PROVIDER;
// Static initializer to use TL or CLQ mode
static {
- useThreadLocal = MarlinProperties.isUseThreadLocal();
+ USE_THREAD_LOCAL = MarlinProperties.isUseThreadLocal();
// Soft reference by default:
final String refType = AccessController.doPrivileged(
@@ -978,8 +966,8 @@
break;
}
- if (useThreadLocal) {
- rdrCtxProvider = new ReentrantContextProviderTL<RendererContext>(REF_TYPE)
+ if (USE_THREAD_LOCAL) {
+ RDR_CTX_PROVIDER = new ReentrantContextProviderTL<RendererContext>(REF_TYPE)
{
@Override
protected RendererContext newContext() {
@@ -987,7 +975,7 @@
}
};
} else {
- rdrCtxProvider = new ReentrantContextProviderCLQ<RendererContext>(REF_TYPE)
+ RDR_CTX_PROVIDER = new ReentrantContextProviderCLQ<RendererContext>(REF_TYPE)
{
@Override
protected RendererContext newContext() {
@@ -997,14 +985,14 @@
}
}
- private static boolean settingsLogged = !enableLogs;
+ private static boolean SETTINGS_LOGGED = !ENABLE_LOGS;
private static void logSettings(final String reClass) {
// log information at startup
- if (settingsLogged) {
+ if (SETTINGS_LOGGED) {
return;
}
- settingsLogged = true;
+ SETTINGS_LOGGED = true;
String refType;
switch (REF_TYPE) {
@@ -1029,7 +1017,7 @@
logInfo("sun.java2d.renderer = "
+ reClass);
logInfo("sun.java2d.renderer.useThreadLocal = "
- + useThreadLocal);
+ + USE_THREAD_LOCAL);
logInfo("sun.java2d.renderer.useRef = "
+ refType);
@@ -1063,23 +1051,23 @@
// optimisation parameters
logInfo("sun.java2d.renderer.useSimplifier = "
- + MarlinConst.useSimplifier);
+ + MarlinConst.USE_SIMPLIFIER);
// debugging parameters
logInfo("sun.java2d.renderer.doStats = "
- + MarlinConst.doStats);
+ + MarlinConst.DO_STATS);
logInfo("sun.java2d.renderer.doMonitors = "
- + MarlinConst.doMonitors);
+ + MarlinConst.DO_MONITORS);
logInfo("sun.java2d.renderer.doChecks = "
- + MarlinConst.doChecks);
+ + MarlinConst.DO_CHECKS);
// logging parameters
logInfo("sun.java2d.renderer.useLogger = "
- + MarlinConst.useLogger);
+ + MarlinConst.USE_LOGGER);
logInfo("sun.java2d.renderer.logCreateContext = "
- + MarlinConst.logCreateContext);
+ + MarlinConst.LOG_CREATE_CONTEXT);
logInfo("sun.java2d.renderer.logUnsafeMalloc = "
- + MarlinConst.logUnsafeMalloc);
+ + MarlinConst.LOG_UNSAFE_MALLOC);
// quality settings
logInfo("Renderer settings:");
@@ -1098,9 +1086,9 @@
*/
@SuppressWarnings({"unchecked"})
static RendererContext getRendererContext() {
- final RendererContext rdrCtx = rdrCtxProvider.acquire();
- if (doMonitors) {
- RendererContext.stats.mon_pre_getAATileGenerator.start();
+ final RendererContext rdrCtx = RDR_CTX_PROVIDER.acquire();
+ if (DO_MONITORS) {
+ rdrCtx.stats.mon_pre_getAATileGenerator.start();
}
return rdrCtx;
}
@@ -1112,9 +1100,9 @@
static void returnRendererContext(final RendererContext rdrCtx) {
rdrCtx.dispose();
- if (doMonitors) {
- RendererContext.stats.mon_pre_getAATileGenerator.stop();
+ if (DO_MONITORS) {
+ rdrCtx.stats.mon_pre_getAATileGenerator.stop();
}
- rdrCtxProvider.release(rdrCtx);
+ RDR_CTX_PROVIDER.release(rdrCtx);
}
}