diff options
author | ceisserer <none@none> | 2010-05-28 11:37:44 -0700 |
---|---|---|
committer | ceisserer <none@none> | 2010-05-28 11:37:44 -0700 |
commit | 93956cae3b774c623d420359f723f9f76f906257 (patch) | |
tree | 4b6071c16cc574276e56e03df5af421a9036fbd4 /src/solaris/classes/sun/awt/X11GraphicsEnvironment.java | |
parent | 9f77a553296b86ea53f5f7e3d5bbbe6030078924 (diff) | |
download | jdk8u_jdk-93956cae3b774c623d420359f723f9f76f906257.tar.gz |
6307603: [X11] Use RENDER extension for complex operations done in software
Reviewed-by: bae, igor, prr
Diffstat (limited to 'src/solaris/classes/sun/awt/X11GraphicsEnvironment.java')
-rw-r--r-- | src/solaris/classes/sun/awt/X11GraphicsEnvironment.java | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java b/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java index 6ea0756dd5..356beb15f4 100644 --- a/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java +++ b/src/solaris/classes/sun/awt/X11GraphicsEnvironment.java @@ -26,6 +26,7 @@ package sun.awt; import java.awt.GraphicsDevice; + import java.awt.Point; import java.awt.Rectangle; import java.io.BufferedReader; @@ -51,6 +52,7 @@ import sun.java2d.SunGraphicsEnvironment; import sun.java2d.SurfaceManagerFactory; import sun.java2d.UnixSurfaceManagerFactory; import sun.util.logging.PlatformLogger; +import sun.java2d.xr.XRSurfaceData; /** * This is an implementation of a GraphicsEnvironment object for the @@ -92,6 +94,18 @@ public class X11GraphicsEnvironment } } + // Now check for XRender system property + boolean xRenderRequested = false; + String xProp = System.getProperty("sun.java2d.xrender"); + if (xProp != null) { + if (xProp.equals("true") || xProp.equals("t")) { + xRenderRequested = true; + } else if (xProp.equals("True") || xProp.equals("T")) { + xRenderRequested = true; + xRenderVerbose = true; + } + } + // initialize the X11 display connection initDisplay(glxRequested); @@ -104,6 +118,19 @@ public class X11GraphicsEnvironment "pipeline (GLX 1.3 not available)"); } } + + // only attempt to initialize Xrender if it was requested + if (xRenderRequested) { + xRenderAvailable = initXRender(); + if (xRenderVerbose && !xRenderAvailable) { + System.out.println( + "Could not enable XRender pipeline"); + } + } + + if (xRenderAvailable) { + XRSurfaceData.initXRSurfaceData(); + } } return null; @@ -115,6 +142,7 @@ public class X11GraphicsEnvironment } + private static boolean glxAvailable; private static boolean glxVerbose; @@ -128,6 +156,18 @@ public class X11GraphicsEnvironment return glxVerbose; } + private static boolean xRenderVerbose; + private static boolean xRenderAvailable; + + private static native boolean initXRender(); + public static boolean isXRenderAvailable() { + return xRenderAvailable; + } + + public static boolean isXRenderVerbose() { + return xRenderVerbose; + } + /** * Checks if Shared Memory extension can be used. * Returns: |