public static boolean XineramaIsEnabled(long displayHandle) { if (0 == displayHandle) { throw new IllegalArgumentException("X11 Display handle is NULL"); } final String displayName = X11Lib.XDisplayString(displayHandle); synchronized (displayXineramaEnabledMap) { final Boolean b = displayXineramaEnabledMap.get(displayName); if (null != b) { return b.booleanValue(); } } final boolean res; if (!XineramaFetched) { // volatile: ok synchronized (X11Util.class) { if (!XineramaFetched) { XineramaLibHandle = X11Lib.XineramaGetLibHandle(); if (0 != XineramaLibHandle) { XineramaQueryFunc = X11Lib.XineramaGetQueryFunc(XineramaLibHandle); } XineramaFetched = true; } } } if (0 != XineramaQueryFunc) { res = X11Lib.XineramaIsEnabled(XineramaQueryFunc, displayHandle); } else { if (DEBUG) { System.err.println( "XineramaIsEnabled: Couldn't bind to Xinerama - lib 0x" + Long.toHexString(XineramaLibHandle) + "query 0x" + Long.toHexString(XineramaQueryFunc)); } res = false; } synchronized (displayXineramaEnabledMap) { if (DEBUG) { System.err.println( "XineramaIsEnabled Cache: Display " + displayName + " (0x" + Long.toHexString(displayHandle) + ") -> " + res); } displayXineramaEnabledMap.put(displayName, Boolean.valueOf(res)); } return res; }