提交 47a08914 编写于 作者: T tdv

6748082: remove platform-specific code from SwingUtilities2.isDisplayLocal

Reviewed-by: prr, tdv
Contributed-by: rkennke@kennke.org
上级 1709d153
...@@ -1272,6 +1272,13 @@ public abstract class SunGraphicsEnvironment extends GraphicsEnvironment ...@@ -1272,6 +1272,13 @@ public abstract class SunGraphicsEnvironment extends GraphicsEnvironment
displayChanger.notifyPaletteChanged(); displayChanger.notifyPaletteChanged();
} }
/**
* Returns true when the display is local, false for remote displays.
*
* @return true when the display is local, false for remote displays
*/
public abstract boolean isDisplayLocal();
/* /*
* ----DISPLAY CHANGE SUPPORT---- * ----DISPLAY CHANGE SUPPORT----
*/ */
......
...@@ -55,6 +55,7 @@ import java.io.*; ...@@ -55,6 +55,7 @@ import java.io.*;
import java.util.*; import java.util.*;
import sun.font.FontDesignMetrics; import sun.font.FontDesignMetrics;
import sun.font.FontManager; import sun.font.FontManager;
import sun.java2d.SunGraphicsEnvironment;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
import java.util.concurrent.Future; import java.util.concurrent.Future;
...@@ -1482,22 +1483,14 @@ public class SwingUtilities2 { ...@@ -1482,22 +1483,14 @@ public class SwingUtilities2 {
* appear capable of performing gamma correction needed for LCD text. * appear capable of performing gamma correction needed for LCD text.
*/ */
public static boolean isLocalDisplay() { public static boolean isLocalDisplay() {
try { boolean isLocal;
// On Windows just return true. Permission to read os.name GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
// is granted to all code but wrapped in try to be safe. if (ge instanceof SunGraphicsEnvironment) {
if (OSInfo.getOSType() == OSInfo.OSType.WINDOWS) { isLocal = ((SunGraphicsEnvironment) ge).isDisplayLocal();
return true; } else {
} isLocal = true;
// Else probably Solaris or Linux in which case may be remote X11 }
Class x11Class = Class.forName("sun.awt.X11GraphicsEnvironment"); return isLocal;
Method isDisplayLocalMethod = x11Class.getMethod(
"isDisplayLocal", new Class[0]);
return (Boolean)isDisplayLocalMethod.invoke(null, (Object[])null);
} catch (Throwable t) {
}
// If we get here we're most likely being run on some other O/S
// or we didn't properly detect Windows.
return true;
} }
/** /**
......
...@@ -209,7 +209,7 @@ public class X11GraphicsEnvironment ...@@ -209,7 +209,7 @@ public class X11GraphicsEnvironment
private static native int checkShmExt(); private static native int checkShmExt();
private static native String getDisplayString(); private static native String getDisplayString();
private static Boolean isDisplayLocal; private Boolean isDisplayLocal;
/** /**
* This should only be called from the static initializer, so no need for * This should only be called from the static initializer, so no need for
...@@ -234,7 +234,8 @@ public class X11GraphicsEnvironment ...@@ -234,7 +234,8 @@ public class X11GraphicsEnvironment
return getScreenDevices()[getDefaultScreenNum()]; return getScreenDevices()[getDefaultScreenNum()];
} }
public static boolean isDisplayLocal() { @Override
public boolean isDisplayLocal() {
if (isDisplayLocal == null) { if (isDisplayLocal == null) {
SunToolkit.awtLock(); SunToolkit.awtLock();
try { try {
......
...@@ -156,7 +156,7 @@ jboolean isDisplayLocal(JNIEnv *env) { ...@@ -156,7 +156,7 @@ jboolean isDisplayLocal(JNIEnv *env) {
isLocal = JNU_CallStaticMethodByName(env, NULL, isLocal = JNU_CallStaticMethodByName(env, NULL,
"sun/awt/X11GraphicsEnvironment", "sun/awt/X11GraphicsEnvironment",
"isDisplayLocal", "_isDisplayLocal",
"()Z").z; "()Z").z;
isLocalSet = True; isLocalSet = True;
return isLocal; return isLocal;
......
...@@ -393,4 +393,9 @@ public class Win32GraphicsEnvironment ...@@ -393,4 +393,9 @@ public class Win32GraphicsEnvironment
private static void dwmCompositionChanged(boolean enabled) { private static void dwmCompositionChanged(boolean enabled) {
isDWMCompositionEnabled = enabled; isDWMCompositionEnabled = enabled;
} }
@Override
public boolean isDisplayLocal() {
return true;
}
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册