aboutsummaryrefslogtreecommitdiff
path: root/src/share/classes/sun/java2d
diff options
context:
space:
mode:
authormchung <none@none>2009-04-14 17:43:45 -0700
committermchung <none@none>2009-04-14 17:43:45 -0700
commitd5367ebe0efaef8419e416a330b774ea4c877029 (patch)
tree6a77aba742faddd2554d8b6f80ee38c1204d0aa8 /src/share/classes/sun/java2d
parentaba28398d989505f1949d9d2b6ea124917bfa1aa (diff)
6818072: Load Ductus using Class.forName if exist instead of using the service loader
Summary: First attempt Class.forName to load Ductus class before using service loader Reviewed-by: flar, prr
Diffstat (limited to 'src/share/classes/sun/java2d')
-rw-r--r--src/share/classes/sun/java2d/pipe/RenderingEngine.java21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/share/classes/sun/java2d/pipe/RenderingEngine.java b/src/share/classes/sun/java2d/pipe/RenderingEngine.java
index 1c189f7e0..5a0163a61 100644
--- a/src/share/classes/sun/java2d/pipe/RenderingEngine.java
+++ b/src/share/classes/sun/java2d/pipe/RenderingEngine.java
@@ -95,6 +95,11 @@ public abstract class RenderingEngine {
* <pre>
* java -Dsun.java2d.renderer=&lt;classname&gt;
* </pre>
+ *
+ * If no specific {@code RenderingEngine} is specified on the command
+ * or Ductus renderer is specified, it will attempt loading the
+ * sun.dc.DuctusRenderingEngine class using Class.forName as a fastpath;
+ * if not found, use the ServiceLoader.
* If no specific {@code RenderingEngine} is specified on the command
* line then the last one returned by enumerating all subclasses of
* {@code RenderingEngine} known to the ServiceLoader is used.
@@ -115,9 +120,21 @@ public abstract class RenderingEngine {
reImpl = (RenderingEngine)
AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
+ final String ductusREClass = "sun.dc.DuctusRenderingEngine";
String reClass =
- System.getProperty("sun.java2d.renderer",
- "sun.dc.DuctusRenderingEngine");
+ System.getProperty("sun.java2d.renderer", ductusREClass);
+ if (reClass.equals(ductusREClass)) {
+ try {
+ Class cls = Class.forName(ductusREClass);
+ return cls.newInstance();
+ } catch (ClassNotFoundException x) {
+ // not found
+ } catch (IllegalAccessException x) {
+ // should not reach here
+ } catch (InstantiationException x) {
+ // should not reach here
+ }
+ }
ServiceLoader<RenderingEngine> reLoader =
ServiceLoader.loadInstalled(RenderingEngine.class);