--- old/modules/graphics/src/main/java/com/sun/glass/ui/monocle/MonocleSettings.java 2014-05-11 18:09:37.000000000 +0300 +++ new/modules/graphics/src/main/java/com/sun/glass/ui/monocle/MonocleSettings.java 2014-05-11 18:09:37.000000000 +0300 @@ -33,10 +33,12 @@ public final boolean traceEvents; public final boolean traceEventsVerbose; + public final boolean tracePlatformConfig; private MonocleSettings() { traceEvents = Boolean.getBoolean("monocle.input.traceEvents"); traceEventsVerbose = Boolean.getBoolean("monocle.input.traceEvents.verbose"); + tracePlatformConfig = Boolean.getBoolean("monocle.platform.traceConfig"); } } --- old/modules/graphics/src/main/java/com/sun/glass/ui/monocle/MonocleTrace.java 2014-05-11 18:09:38.000000000 +0300 +++ new/modules/graphics/src/main/java/com/sun/glass/ui/monocle/MonocleTrace.java 2014-05-11 18:09:38.000000000 +0300 @@ -26,11 +26,19 @@ public class MonocleTrace { public static void traceEvent(String format, Object... args) { + trace("traceEvent", format, args); + } + + public static void traceConfig(String format, Object... args) { + trace("traceConfig", format, args); + } + + private static void trace(String prefix, String format, Object[] args) { synchronized (System.out) { - System.out.print("traceEvent: "); + System.out.print(prefix); + System.out.print(": "); System.out.format(format, args); System.out.println(); } } - } --- old/modules/graphics/src/main/java/com/sun/glass/ui/monocle/NativePlatformFactory.java 2014-05-11 18:09:39.000000000 +0300 +++ new/modules/graphics/src/main/java/com/sun/glass/ui/monocle/NativePlatformFactory.java 2014-05-11 18:09:39.000000000 +0300 @@ -40,7 +40,7 @@ if (platform == null) { String platformFactoryProperty = AccessController.doPrivileged((PrivilegedAction) () -> System.getProperty("monocle.platform", - "MX6,OMAP,Dispman,Linux,Headless")); + "MX6,OMAP,Dispman,X11,Linux,Headless")); String[] platformFactories = platformFactoryProperty.split(","); for (int i = 0; i < platformFactories.length; i++) { String factoryName = platformFactories[i].trim(); @@ -52,15 +52,26 @@ + factoryName.toLowerCase(Locale.ROOT) + "." + factoryName + "PlatformFactory"; } + if (MonocleSettings.settings.tracePlatformConfig) { + MonocleTrace.traceConfig("Trying platform %s with class %s", + factoryName, factoryClassName); + } try { NativePlatformFactory npf = (NativePlatformFactory) Class.forName(factoryClassName) .newInstance(); if (npf.matches()) { platform = npf.createNativePlatform(); + if (MonocleSettings.settings.tracePlatformConfig) { + MonocleTrace.traceConfig("Matched %s", factoryName); + } return platform; } } catch (Exception e) { + if (MonocleSettings.settings.tracePlatformConfig) { + MonocleTrace.traceConfig("Failed to create platform %s", + factoryClassName); + } e.printStackTrace(); } } --- old/modules/graphics/src/main/java/com/sun/glass/ui/monocle/x11/X11PlatformFactory.java 2014-05-11 18:09:40.000000000 +0300 +++ new/modules/graphics/src/main/java/com/sun/glass/ui/monocle/x11/X11PlatformFactory.java 2014-05-11 18:09:40.000000000 +0300 @@ -28,11 +28,16 @@ import com.sun.glass.ui.monocle.NativePlatform; import com.sun.glass.ui.monocle.NativePlatformFactory; +import java.security.AccessController; +import java.security.PrivilegedAction; + public class X11PlatformFactory extends NativePlatformFactory { @Override protected boolean matches() { - return true; + String display = AccessController.doPrivileged( + (PrivilegedAction) () -> System.getenv("DISPLAY")); + return display != null; } @Override