diff options
Diffstat (limited to 'src/nativewindow/classes/com/sun')
-rw-r--r-- | src/nativewindow/classes/com/sun/nativewindow/impl/NullWindow.java | 9 | ||||
-rw-r--r-- | src/nativewindow/classes/com/sun/nativewindow/impl/jawt/JAWTUtil.java | 44 |
2 files changed, 49 insertions, 4 deletions
diff --git a/src/nativewindow/classes/com/sun/nativewindow/impl/NullWindow.java b/src/nativewindow/classes/com/sun/nativewindow/impl/NullWindow.java index 46128b227..c7d2acec0 100644 --- a/src/nativewindow/classes/com/sun/nativewindow/impl/NullWindow.java +++ b/src/nativewindow/classes/com/sun/nativewindow/impl/NullWindow.java @@ -44,7 +44,6 @@ public class NullWindow implements NativeWindow { protected long surfaceHandle, displayHandle; protected AbstractGraphicsConfiguration config; - public NullWindow(AbstractGraphicsConfiguration cfg) { invalidate(); config = cfg; @@ -128,4 +127,12 @@ public class NullWindow implements NativeWindow { public int getHeight() { return height; } + + public String toString() { + return "NullWindow[config "+config+ + ", displayHandle 0x"+Long.toHexString(getDisplayHandle())+ + ", surfaceHandle 0x"+Long.toHexString(getSurfaceHandle())+ + ", size "+getWidth()+"x"+getHeight()+"]"; + } + } diff --git a/src/nativewindow/classes/com/sun/nativewindow/impl/jawt/JAWTUtil.java b/src/nativewindow/classes/com/sun/nativewindow/impl/jawt/JAWTUtil.java index af93b8c31..aac01e990 100644 --- a/src/nativewindow/classes/com/sun/nativewindow/impl/jawt/JAWTUtil.java +++ b/src/nativewindow/classes/com/sun/nativewindow/impl/jawt/JAWTUtil.java @@ -41,19 +41,39 @@ import com.sun.nativewindow.impl.*; import javax.media.nativewindow.*; import java.awt.GraphicsEnvironment; +import java.lang.reflect.*; public class JAWTUtil { + // See whether we're running in headless mode + private static final boolean headlessMode; + + // Java2D magic .. + private static final Class j2dClazz; + private static final Method isQueueFlusherThread; + private static final boolean j2dExist; + static { JAWTNativeLibLoader.loadAWTImpl(); JAWTNativeLibLoader.loadNativeWindow("awt"); lockedStack = null; headlessMode = GraphicsEnvironment.isHeadless(); - } - // See whether we're running in headless mode - private static final boolean headlessMode; + boolean ok=false; + Class jC=null; + Method m=null; + if(!headlessMode) { + try { + jC = Class.forName("com.sun.opengl.impl.awt.Java2D"); + m = jC.getMethod("isQueueFlusherThread", null); + ok = true; + } catch (Exception e) {} + } + j2dClazz = jC; + isQueueFlusherThread = m; + j2dExist = ok; + } private static Exception lockedStack; @@ -61,11 +81,27 @@ public class JAWTUtil { // ie loading the native libraries .. public static void init() { } + public static final boolean hasJava2D() { + return j2dExist; + } + + public static final boolean isJava2DQueueFlusherThread() { + boolean b = false; + if(j2dExist) { + try { + b = ((Boolean)isQueueFlusherThread.invoke(null, null)).booleanValue(); + } catch (Exception e) {} + } + return b; + } + public static boolean isHeadlessMode() { return headlessMode; } public static synchronized void lockToolkit() throws NativeWindowException { + if (isJava2DQueueFlusherThread()) return; + if (null!=lockedStack) { lockedStack.printStackTrace(); throw new NativeWindowException("JAWT Toolkit already locked - "+Thread.currentThread().getName()); @@ -83,6 +119,8 @@ public class JAWTUtil { } public static synchronized void unlockToolkit() { + if (isJava2DQueueFlusherThread()) return; + if (null!=lockedStack) { lockedStack = null; if (headlessMode) { |