src/share/classes/sun/java2d/pipe/RenderingEngine.java

Print this page

        

@@ -30,11 +30,10 @@
 import java.awt.geom.PathIterator;
 import java.awt.geom.AffineTransform;
 
 import java.security.PrivilegedAction;
 import java.security.AccessController;
-import java.util.ServiceLoader;
 import sun.security.action.GetPropertyAction;
 
 import sun.awt.geom.PathConsumer2D;
 
 /**

@@ -95,16 +94,13 @@
      * <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.
+     * or Ductus renderer is specified, it will first attempt loading the
+     * sun.dc.DuctusRenderingEngine class using Class.forName, if that
+     * is not found, then it will look for Pisces.
      * <p>
      * Runtime tracing of the actions of the {@code RenderingEngine}
      * can be enabled by specifying the runtime flag:
      * <pre>
      *     java -Dsun.java2d.renderer.trace=&lt;any string&gt;

@@ -118,34 +114,33 @@
         }
 
         reImpl =
             AccessController.doPrivileged(new PrivilegedAction<RenderingEngine>() {
                 public RenderingEngine run() {
+                    /* Look first for ductus or an app-override renderer,
+                     * if not specified or present, then look for pisces.
+                     */
                     final String ductusREClass = "sun.dc.DuctusRenderingEngine";
-                    String reClass =
-                        System.getProperty("sun.java2d.renderer", ductusREClass);
-                    if (reClass.equals(ductusREClass)) {
+                    final String piscesREClass = "sun.java2d.pisces.PiscesRenderingEngine";
+                    String reClass = System.getProperty("sun.java2d.renderer");
+                    if (reClass == null) {
+                        reClass = ductusREClass;
+                    }
                         try {
-                            Class<?> cls = Class.forName(ductusREClass);
+                        Class<?> cls = Class.forName(reClass);
                             return (RenderingEngine) cls.newInstance();
                         } catch (ReflectiveOperationException ignored) {
                             // not found
                         }
+                    try {
+                        Class<?> cls = Class.forName(piscesREClass);
+                        return (RenderingEngine) cls.newInstance();
+                    } catch (ReflectiveOperationException ignored) {
+                        // not found
                     }
 
-                    ServiceLoader<RenderingEngine> reLoader =
-                        ServiceLoader.loadInstalled(RenderingEngine.class);
-
-                    RenderingEngine service = null;
-
-                    for (RenderingEngine re : reLoader) {
-                        service = re;
-                        if (re.getClass().getName().equals(reClass)) {
-                            break;
-                        }
-                    }
-                    return service;
+                    return null;
                 }
             });
 
         if (reImpl == null) {
             throw new InternalError("No RenderingEngine module found");