--- old/src/java.desktop/unix/classes/sun/awt/X11/XRobotPeer.java 2016-11-18 13:46:15.470644631 +0300 +++ new/src/java.desktop/unix/classes/sun/awt/X11/XRobotPeer.java 2016-11-18 13:46:15.390644633 +0300 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -25,7 +25,7 @@ package sun.awt.X11; import java.awt.*; -import java.awt.peer.*; +import java.awt.peer.RobotPeer; import java.security.AccessController; import java.security.PrivilegedAction; @@ -37,37 +37,32 @@ class XRobotPeer implements RobotPeer { - static final boolean tryGtk; static { loadNativeLibraries(); - tryGtk = AccessController.doPrivileged((PrivilegedAction)() - -> Boolean.getBoolean("awt.robot.gtk")); } - private static boolean isGtkSupported = false; - private static volatile boolean useGtk; - private X11GraphicsConfig xgc = null; + private final boolean useGtk; + private final X11GraphicsConfig xgc; /* * native implementation uses some static shared data (pipes, processes) * so use a class lock to synchronize native method calls */ - static Object robotLock = new Object(); + static final Object robotLock = new Object(); XRobotPeer(GraphicsConfiguration gc) { - this.xgc = (X11GraphicsConfig)gc; + xgc = (X11GraphicsConfig)gc; SunToolkit tk = (SunToolkit)Toolkit.getDefaultToolkit(); setup(tk.getNumberOfButtons(), AWTAccessor.getInputEventAccessor().getButtonDownMasks()); - boolean isGtkSupported = false; - if (tryGtk) { - if (tk instanceof UNIXToolkit && ((UNIXToolkit) tk).loadGTK()) { - isGtkSupported = true; - } + if (!(tk instanceof UNIXToolkit) || "false".equals(AccessController. + doPrivileged((PrivilegedAction)() -> + System.getProperty("awt.robot.gtk")))) { + useGtk = false; + } else { + useGtk = ((UNIXToolkit) tk).loadGTK(); } - - useGtk = (tryGtk && isGtkSupported); } @Override