< prev index next >

src/java.desktop/unix/classes/sun/awt/X11/XRobotPeer.java

Print this page

        

@@ -33,12 +33,18 @@
 import sun.awt.X11GraphicsConfig;
 import sun.awt.X11GraphicsEnvironment;
 
 class XRobotPeer implements RobotPeer {
 
-    private static volatile boolean isGtkSupported;
+    static final boolean tryGtk;
+    static {
+        tryGtk = Boolean.getBoolean("awt.robot.gtk");
+    }
+    
+    private static volatile boolean useGtk;
     private X11GraphicsConfig   xgc = null;
+    
     /*
      * native implementation uses some static shared data (pipes, processes)
      * so use a class lock to synchronize native method calls
      */
     static Object robotLock = new Object();

@@ -47,17 +53,18 @@
         this.xgc = (X11GraphicsConfig)gc;
         SunToolkit tk = (SunToolkit)Toolkit.getDefaultToolkit();
         setup(tk.getNumberOfButtons(),
                 AWTAccessor.getInputEventAccessor().getButtonDownMasks());
 
-        Toolkit toolkit = Toolkit.getDefaultToolkit();
-        if (!isGtkSupported) {
-            if (toolkit instanceof UNIXToolkit
-                    && ((UNIXToolkit) toolkit).loadGTK()) {
+        boolean isGtkSupported =  false;
+        if (tryGtk && !isGtkSupported) {
+            if (tk instanceof UNIXToolkit && ((UNIXToolkit) tk).loadGTK()) {
                 isGtkSupported = true;
             }
         }
+        
+        useGtk = (tryGtk && isGtkSupported);
     }
 
     @Override
     public void dispose() {
         // does nothing

@@ -102,19 +109,19 @@
 
     @Override
     public int getRGBPixel(int x, int y) {
         int pixelArray[] = new int[1];
         getRGBPixelsImpl(xgc, x, y, 1, 1, xgc.getScale(), pixelArray,
-                         isGtkSupported);
+                         useGtk);
         return pixelArray[0];
     }
 
     @Override
     public int [] getRGBPixels(Rectangle bounds) {
         int pixelArray[] = new int[bounds.width*bounds.height];
         getRGBPixelsImpl(xgc, bounds.x, bounds.y, bounds.width, bounds.height,
-                         xgc.getScale(), pixelArray, isGtkSupported);
+                         xgc.getScale(), pixelArray, useGtk);
         return pixelArray;
     }
 
     private static synchronized native void setup(int numberOfButtons, int[] buttonDownMasks);
 
< prev index next >