aboutsummaryrefslogtreecommitdiffstats
path: root/src/nativewindow/classes/com/jogamp
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2011-02-08 06:20:35 +0100
committerSven Gothel <[email protected]>2011-02-08 06:20:35 +0100
commit4cda4b70dbcd21cf57e1e253ddba32b88bcaec18 (patch)
tree6f16d211cb80ebf5dcc8cab6424c70079a38ea7f /src/nativewindow/classes/com/jogamp
parenteb7986963c87bc6f33e7f18bb90ddf898b7dd63a (diff)
Move implementation private files from com.jogamp.<module>.impl. to jogamp.<module> (1/2) - rename task
- com.jogamp.opengl.impl -> jogamp.opengl - com.jogamp.opengl.util.glsl.fixedfunc.impl -> jogamp.opengl.util.glsl.fixedfunc - com.jogamp.nativewindow.impl -> jogamp.nativewindow - com.jogamp.newt.impl -> jogamp.newt This sorts implementation details from the top level, ie skipping the public 'com', allowing a better seperation of public classes and implementation details and also reduces strings. This approach of public/private seperation is also used in the OpenJDK.
Diffstat (limited to 'src/nativewindow/classes/com/jogamp')
-rw-r--r--src/nativewindow/classes/com/jogamp/nativewindow/impl/Debug.java140
-rw-r--r--src/nativewindow/classes/com/jogamp/nativewindow/impl/DefaultGraphicsConfigurationFactoryImpl.java43
-rw-r--r--src/nativewindow/classes/com/jogamp/nativewindow/impl/NWJNILibLoader.java47
-rw-r--r--src/nativewindow/classes/com/jogamp/nativewindow/impl/NativeWindowFactoryImpl.java109
-rw-r--r--src/nativewindow/classes/com/jogamp/nativewindow/impl/NullToolkitLock.java55
-rw-r--r--src/nativewindow/classes/com/jogamp/nativewindow/impl/ProxySurface.java171
-rw-r--r--src/nativewindow/classes/com/jogamp/nativewindow/impl/awt/AWTMisc.java96
-rw-r--r--src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/JAWTJNILibLoader.java78
-rw-r--r--src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/JAWTToolkitLock.java54
-rw-r--r--src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/JAWTUtil.java225
-rw-r--r--src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/JAWTWindow.java277
-rw-r--r--src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/JAWT_PlatformInfo.java47
-rw-r--r--src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/macosx/MacOSXJAWTWindow.java148
-rw-r--r--src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/windows/Win32SunJDKReflection.java117
-rw-r--r--src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/windows/WindowsJAWTWindow.java145
-rw-r--r--src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/x11/X11JAWTToolkitLock.java60
-rw-r--r--src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/x11/X11JAWTWindow.java156
-rw-r--r--src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/x11/X11SunJDKReflection.java118
-rw-r--r--src/nativewindow/classes/com/jogamp/nativewindow/impl/windows/RegisteredClass.java44
-rw-r--r--src/nativewindow/classes/com/jogamp/nativewindow/impl/windows/RegisteredClassFactory.java133
-rw-r--r--src/nativewindow/classes/com/jogamp/nativewindow/impl/x11/X11GraphicsConfigurationFactory.java104
-rw-r--r--src/nativewindow/classes/com/jogamp/nativewindow/impl/x11/X11ToolkitLock.java55
-rw-r--r--src/nativewindow/classes/com/jogamp/nativewindow/impl/x11/X11Util.java610
23 files changed, 0 insertions, 3032 deletions
diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/impl/Debug.java b/src/nativewindow/classes/com/jogamp/nativewindow/impl/Debug.java
deleted file mode 100644
index edb682392..000000000
--- a/src/nativewindow/classes/com/jogamp/nativewindow/impl/Debug.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (c) 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * - Redistribution of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistribution in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * Neither the name of Sun Microsystems, Inc. or the names of
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * This software is provided "AS IS," without a warranty of any kind. ALL
- * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
- * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
- * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
- * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
- * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
- * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
- * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
- * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
- * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
- * You acknowledge that this software is not designed or intended for use
- * in the design, construction, operation or maintenance of any nuclear
- * facility.
- *
- * Sun gratefully acknowledges that this software was originally authored
- * and developed by Kenneth Bradley Russell and Christopher John Kline.
- */
-
-package com.jogamp.nativewindow.impl;
-
-import java.security.*;
-
-/** Helper routines for logging and debugging. */
-
-public class Debug {
- // Some common properties
- private static boolean verbose;
- private static boolean debugAll;
- private static AccessControlContext localACC;
-
- static {
- localACC=AccessController.getContext();
- verbose = isPropertyDefined("nativewindow.verbose", true);
- debugAll = isPropertyDefined("nativewindow.debug", true);
- if (verbose) {
- Package p = Package.getPackage("javax.media.nativewindow");
- System.err.println("NativeWindow specification version " + p.getSpecificationVersion());
- System.err.println("NativeWindow implementation version " + p.getImplementationVersion());
- System.err.println("NativeWindow implementation vendor " + p.getImplementationVendor());
- }
- }
-
- static int getIntProperty(final String property, final boolean jnlpAlias) {
- return getIntProperty(property, jnlpAlias, localACC);
- }
-
- public static int getIntProperty(final String property, final boolean jnlpAlias, final AccessControlContext acc) {
- int i=0;
- try {
- Integer iv = Integer.valueOf(Debug.getProperty(property, jnlpAlias, acc));
- i = iv.intValue();
- } catch (NumberFormatException nfe) {}
- return i;
- }
-
- static boolean getBooleanProperty(final String property, final boolean jnlpAlias) {
- return getBooleanProperty(property, jnlpAlias, localACC);
- }
-
- public static boolean getBooleanProperty(final String property, final boolean jnlpAlias, final AccessControlContext acc) {
- Boolean b = Boolean.valueOf(Debug.getProperty(property, jnlpAlias, acc));
- return b.booleanValue();
- }
-
- static boolean isPropertyDefined(final String property, final boolean jnlpAlias) {
- return isPropertyDefined(property, jnlpAlias, localACC);
- }
-
- public static boolean isPropertyDefined(final String property, final boolean jnlpAlias, final AccessControlContext acc) {
- return (Debug.getProperty(property, jnlpAlias, acc) != null) ? true : false;
- }
-
- static String getProperty(final String property, final boolean jnlpAlias) {
- return getProperty(property, jnlpAlias, localACC);
- }
-
- public static String getProperty(final String property, final boolean jnlpAlias, final AccessControlContext acc) {
- String s=null;
- if(null!=acc && acc.equals(localACC)) {
- s = (String) AccessController.doPrivileged(new PrivilegedAction() {
- public Object run() {
- String val=null;
- try {
- val = System.getProperty(property);
- } catch (Exception e) {}
- if(null==val && jnlpAlias && !property.startsWith(jnlp_prefix)) {
- try {
- val = System.getProperty(jnlp_prefix + property);
- } catch (Exception e) {}
- }
- return val;
- }
- });
- } else {
- try {
- s = System.getProperty(property);
- } catch (Exception e) {}
- if(null==s && jnlpAlias && !property.startsWith(jnlp_prefix)) {
- try {
- s = System.getProperty(jnlp_prefix + property);
- } catch (Exception e) {}
- }
- }
- return s;
- }
- public static final String jnlp_prefix = "jnlp." ;
-
- public static boolean verbose() {
- return verbose;
- }
-
- public static boolean debugAll() {
- return debugAll;
- }
-
- public static boolean debug(String subcomponent) {
- return debugAll() || isPropertyDefined("nativewindow.debug." + subcomponent, true);
- }
-}
diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/impl/DefaultGraphicsConfigurationFactoryImpl.java b/src/nativewindow/classes/com/jogamp/nativewindow/impl/DefaultGraphicsConfigurationFactoryImpl.java
deleted file mode 100644
index f77454fac..000000000
--- a/src/nativewindow/classes/com/jogamp/nativewindow/impl/DefaultGraphicsConfigurationFactoryImpl.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2009 Sun Microsystems, Inc. All Rights Reserved.
- * Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * - Redistribution of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistribution in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * Neither the name of Sun Microsystems, Inc. or the names of
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * This software is provided "AS IS," without a warranty of any kind. ALL
- * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
- * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
- * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
- * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
- * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
- * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
- * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
- * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
- * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- */
-
-package com.jogamp.nativewindow.impl;
-
-import javax.media.nativewindow.*;
-
-public class DefaultGraphicsConfigurationFactoryImpl extends GraphicsConfigurationFactory {
- protected AbstractGraphicsConfiguration chooseGraphicsConfigurationImpl(
- CapabilitiesImmutable capsChosen, CapabilitiesImmutable capsRequested, CapabilitiesChooser chooser, AbstractGraphicsScreen screen) {
- return new DefaultGraphicsConfiguration(screen, capsChosen, capsRequested);
- }
-}
diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/impl/NWJNILibLoader.java b/src/nativewindow/classes/com/jogamp/nativewindow/impl/NWJNILibLoader.java
deleted file mode 100644
index 3b2a728e5..000000000
--- a/src/nativewindow/classes/com/jogamp/nativewindow/impl/NWJNILibLoader.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * Copyright 2010 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of JogAmp Community.
- */
-
-
-package com.jogamp.nativewindow.impl;
-
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import com.jogamp.common.jvm.JNILibLoaderBase;
-
-public class NWJNILibLoader extends JNILibLoaderBase {
-
- public static void loadNativeWindow(final String ossuffix) {
- AccessController.doPrivileged(new PrivilegedAction() {
- public Object run() {
- loadLibrary("nativewindow_"+ossuffix, null, false);
- return null;
- }
- });
- }
-
-}
diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/impl/NativeWindowFactoryImpl.java b/src/nativewindow/classes/com/jogamp/nativewindow/impl/NativeWindowFactoryImpl.java
deleted file mode 100644
index 860be6f95..000000000
--- a/src/nativewindow/classes/com/jogamp/nativewindow/impl/NativeWindowFactoryImpl.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * - Redistribution of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistribution in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * Neither the name of Sun Microsystems, Inc. or the names of
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * This software is provided "AS IS," without a warranty of any kind. ALL
- * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
- * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
- * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
- * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
- * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
- * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
- * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
- * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
- * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- */
-
-package com.jogamp.nativewindow.impl;
-
-import com.jogamp.common.util.*;
-import java.lang.reflect.*;
-
-import javax.media.nativewindow.*;
-
-public class NativeWindowFactoryImpl extends NativeWindowFactory {
- protected static final boolean DEBUG = Debug.debug("NativeWindow");
-
- private static final ToolkitLock nullToolkitLock = new NullToolkitLock();
-
- public static ToolkitLock getNullToolkitLock() {
- return nullToolkitLock;
- }
-
- // This subclass of NativeWindowFactory handles the case of
- // NativeWindows being passed in
- protected NativeWindow getNativeWindowImpl(Object winObj, AbstractGraphicsConfiguration config) throws IllegalArgumentException {
- if (null == winObj) {
- throw new IllegalArgumentException("winObj is null");
- }
- if (winObj instanceof NativeWindow) {
- // Use the NativeWindow directly
- return (NativeWindow) winObj;
- }
-
- if (null == config) {
- throw new IllegalArgumentException("AbstractGraphicsConfiguration is null with a non NativeWindow object");
- }
-
- if (NativeWindowFactory.isAWTAvailable() && ReflectionUtil.instanceOf(winObj, AWTComponentClassName)) {
- return getAWTNativeWindow(winObj, config);
- }
-
- throw new IllegalArgumentException("Target window object type " +
- winObj.getClass().getName() + " is unsupported; expected " +
- "javax.media.nativewindow.NativeWindow or "+AWTComponentClassName);
- }
-
- private Constructor nativeWindowConstructor = null;
-
- private NativeWindow getAWTNativeWindow(Object winObj, AbstractGraphicsConfiguration config) {
- if (nativeWindowConstructor == null) {
- try {
- String osType = getNativeWindowType(true);
- String windowClassName = null;
-
- // We break compile-time dependencies on the AWT here to
- // make it easier to run this code on mobile devices
-
- if (osType.equals(TYPE_WINDOWS)) {
- windowClassName = "com.jogamp.nativewindow.impl.jawt.windows.WindowsJAWTWindow";
- } else if (osType.equals(TYPE_MACOSX)) {
- windowClassName = "com.jogamp.nativewindow.impl.jawt.macosx.MacOSXJAWTWindow";
- } else if (osType.equals(TYPE_X11)) {
- // Assume Linux, Solaris, etc. Should probably test for these explicitly.
- windowClassName = "com.jogamp.nativewindow.impl.jawt.x11.X11JAWTWindow";
- } else {
- throw new IllegalArgumentException("OS " + getNativeOSName(false) + " not yet supported");
- }
-
- nativeWindowConstructor = ReflectionUtil.getConstructor(
- windowClassName, new Class[] { Object.class, AbstractGraphicsConfiguration.class },
- getClass().getClassLoader());
- } catch (Exception e) {
- throw (IllegalArgumentException) new IllegalArgumentException().initCause(e);
- }
- }
-
- try {
- return (NativeWindow) nativeWindowConstructor.newInstance(new Object[] { winObj, config });
- } catch (Exception ie) {
- throw (IllegalArgumentException) new IllegalArgumentException().initCause(ie);
- }
- }
-}
diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/impl/NullToolkitLock.java b/src/nativewindow/classes/com/jogamp/nativewindow/impl/NullToolkitLock.java
deleted file mode 100644
index db4db1126..000000000
--- a/src/nativewindow/classes/com/jogamp/nativewindow/impl/NullToolkitLock.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * Copyright 2010 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of JogAmp Community.
- */
-
-package com.jogamp.nativewindow.impl;
-
-import javax.media.nativewindow.ToolkitLock;
-
-/**
- * Implementing a singleton global recursive {@link javax.media.nativewindow.ToolkitLock}
- * without any locking. Since there is no locking it all,
- * it is intrinsically recursive.
- */
-public class NullToolkitLock implements ToolkitLock {
-
- /** Singleton via {@link NativeWindowFactoryImpl#getNullToolkitLock()} */
- protected NullToolkitLock() { }
-
- public final void lock() {
- if(TRACE_LOCK) {
- String msg = "NullToolkitLock.lock()";
- System.err.println(msg);
- // Throwable t = new Throwable(msg);
- // t.printStackTrace();
- }
- }
-
- public final void unlock() {
- if(TRACE_LOCK) { System.err.println("NullToolkitLock.unlock()"); }
- }
-}
diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/impl/ProxySurface.java b/src/nativewindow/classes/com/jogamp/nativewindow/impl/ProxySurface.java
deleted file mode 100644
index e0ad95e1f..000000000
--- a/src/nativewindow/classes/com/jogamp/nativewindow/impl/ProxySurface.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
- * Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * - Redistribution of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistribution in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * Neither the name of Sun Microsystems, Inc. or the names of
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * This software is provided "AS IS," without a warranty of any kind. ALL
- * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
- * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
- * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
- * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
- * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
- * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
- * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
- * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
- * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
- * You acknowledge that this software is not designed or intended for use
- * in the design, construction, operation or maintenance of any nuclear
- * facility.
- */
-
-package com.jogamp.nativewindow.impl;
-
-import javax.media.nativewindow.AbstractGraphicsConfiguration;
-import javax.media.nativewindow.NativeSurface;
-import javax.media.nativewindow.NativeWindow;
-import javax.media.nativewindow.NativeWindowException;
-import javax.media.nativewindow.SurfaceChangeable;
-
-import com.jogamp.common.util.locks.RecursiveLock;
-
-public class ProxySurface implements NativeSurface, SurfaceChangeable {
- private RecursiveLock recurLock = new RecursiveLock();
- protected AbstractGraphicsConfiguration config;
- protected long displayHandle;
- protected long surfaceHandle;
- protected int scrnIndex;
- protected int width, height;
-
- public ProxySurface(AbstractGraphicsConfiguration cfg) {
- this(cfg, 0);
- }
-
- public ProxySurface(AbstractGraphicsConfiguration cfg, long handle) {
- invalidate();
- config = cfg;
- displayHandle=cfg.getScreen().getDevice().getHandle();
- surfaceHandle=handle;
- scrnIndex=cfg.getScreen().getIndex();
- }
-
- protected void init(Object windowObject) throws NativeWindowException {
- }
-
- protected void initNative() throws NativeWindowException {
- }
-
- public NativeWindow getParent() {
- return null;
- }
-
- public void destroy() {
- invalidate();
- }
-
- public synchronized void invalidate() {
- displayHandle=0;
- scrnIndex=-1;
- surfaceHandle=0;
- }
-
- public final int lockSurface() throws NativeWindowException {
- recurLock.lock();
-
- if(recurLock.getRecursionCount() == 0) {
- config.getScreen().getDevice().lock();
- }
- return LOCK_SUCCESS;
- }
-
- public final void unlockSurface() {
- recurLock.validateLocked();
-
- if(recurLock.getRecursionCount()==0) {
- config.getScreen().getDevice().unlock();
- }
- recurLock.unlock();
- }
-
- public final void validateSurfaceLocked() {
- recurLock.validateLocked();
- }
-
- public final int getSurfaceRecursionCount() {
- return recurLock.getRecursionCount();
- }
-
- public final boolean isSurfaceLockedByOtherThread() {
- return recurLock.isLockedByOtherThread();
- }
-
- public final boolean isSurfaceLocked() {
- return recurLock.isLocked();
- }
-
- public final Thread getSurfaceLockOwner() {
- return recurLock.getOwner();
- }
-
- public boolean surfaceSwap() {
- return false;
- }
-
- public long getSurfaceHandle() {
- return surfaceHandle;
- }
-
- public int getWidth() {
- return width;
- }
-
- public int getHeight() {
- return height;
- }
-
- public AbstractGraphicsConfiguration getGraphicsConfiguration() {
- return config;
- }
-
- public void surfaceUpdated(Object updater, NativeSurface ns, long when) { }
-
- public long getDisplayHandle() {
- return displayHandle;
- }
- public int getScreenIndex() {
- return scrnIndex;
- }
-
- public void setSurfaceHandle(long surfaceHandle) {
- this.surfaceHandle=surfaceHandle;
- }
-
- public void setSize(int width, int height) {
- this.width=width;
- this.height=height;
- }
-
- public String toString() {
- return "ProxySurface[config "+config+
- ", displayHandle 0x"+Long.toHexString(getDisplayHandle())+
- ", surfaceHandle 0x"+Long.toHexString(getSurfaceHandle())+
- ", size "+getWidth()+"x"+getHeight()+"]";
- }
-
-}
diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/impl/awt/AWTMisc.java b/src/nativewindow/classes/com/jogamp/nativewindow/impl/awt/AWTMisc.java
deleted file mode 100644
index c61ae5531..000000000
--- a/src/nativewindow/classes/com/jogamp/nativewindow/impl/awt/AWTMisc.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/**
- * Copyright 2010 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of JogAmp Community.
- */
-package com.jogamp.nativewindow.impl.awt;
-
-import java.awt.Window;
-import java.awt.Component;
-import java.awt.Container;
-import java.awt.Frame;
-import javax.swing.JFrame;
-import javax.swing.WindowConstants;
-
-import javax.media.nativewindow.NativeWindowException;
-import javax.media.nativewindow.WindowClosingProtocol;
-import javax.swing.MenuSelectionManager;
-
-public class AWTMisc {
-
- public static final JFrame getJFrame(Component c) {
- while (c != null && !(c instanceof JFrame)) {
- c = c.getParent();
- }
- return (JFrame) c;
- }
-
- public static final Frame getFrame(Component c) {
- while (c != null && !(c instanceof Frame)) {
- c = c.getParent();
- }
- return (Frame) c;
- }
-
- public static final Window getWindow(Component c) {
- while (c != null && !(c instanceof Window)) {
- c = c.getParent();
- }
- return (Window) c;
- }
-
- public static final Container getContainer(Component c) {
- while (c != null && !(c instanceof Container)) {
- c = c.getParent();
- }
- return (Container) c;
- }
-
- /**
- * Issue this when your non AWT toolkit gains focus to clear AWT menu path
- */
- public static final void clearAWTMenus() {
- MenuSelectionManager.defaultManager().clearSelectedPath();
- }
-
- public final static int AWT2NWClosingOperation(int awtClosingOperation) {
- switch (awtClosingOperation) {
- case WindowConstants.DISPOSE_ON_CLOSE:
- case WindowConstants.EXIT_ON_CLOSE:
- return WindowClosingProtocol.DISPOSE_ON_CLOSE;
- case WindowConstants.DO_NOTHING_ON_CLOSE:
- case WindowConstants.HIDE_ON_CLOSE:
- return WindowClosingProtocol.DO_NOTHING_ON_CLOSE;
- default:
- throw new NativeWindowException("Unhandled AWT Closing Operation: " + awtClosingOperation);
- }
- }
-
- public final static int getNWClosingOperation(Component c) {
- JFrame jf = getJFrame(c);
- int op = (null != jf) ? jf.getDefaultCloseOperation() : WindowConstants.DO_NOTHING_ON_CLOSE ;
- return AWT2NWClosingOperation(op);
- }
-}
diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/JAWTJNILibLoader.java b/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/JAWTJNILibLoader.java
deleted file mode 100644
index 4ea404c09..000000000
--- a/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/JAWTJNILibLoader.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * - Redistribution of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistribution in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * Neither the name of Sun Microsystems, Inc. or the names of
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * This software is provided "AS IS," without a warranty of any kind. ALL
- * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
- * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
- * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
- * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
- * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
- * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
- * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
- * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
- * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
- * You acknowledge that this software is not designed or intended for use
- * in the design, construction, operation or maintenance of any nuclear
- * facility.
- *
- * Sun gratefully acknowledges that this software was originally authored
- * and developed by Kenneth Bradley Russell and Christopher John Kline.
- */
-
-package com.jogamp.nativewindow.impl.jawt;
-
-import javax.media.nativewindow.NativeWindowFactory;
-import com.jogamp.nativewindow.impl.NWJNILibLoader;
-
-import java.awt.Toolkit;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-
-public class JAWTJNILibLoader extends NWJNILibLoader {
- public static void loadAWTImpl() {
- AccessController.doPrivileged(new PrivilegedAction() {
- public Object run() {
- // Make sure that awt.dll is loaded before loading jawt.dll. Otherwise
- // a Dialog with "awt.dll not found" might pop up.
- // See http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4481947.
- Toolkit.getDefaultToolkit();
-
- // Must pre-load JAWT on all non-Mac platforms to
- // ensure references from jogl_awt shared object
- // will succeed since JAWT shared object isn't in
- // default library path
- if ( ! NativeWindowFactory.TYPE_MACOSX.equals( NativeWindowFactory.getNativeWindowType(false) ) ) {
- try {
- loadLibrary("jawt", null, true);
- } catch (Throwable t) {
- // It might be ok .. if it's already loaded
- if(DEBUG) {
- t.printStackTrace();
- }
- }
- }
- return null;
- }
- });
- }
-}
diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/JAWTToolkitLock.java b/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/JAWTToolkitLock.java
deleted file mode 100644
index 017d74874..000000000
--- a/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/JAWTToolkitLock.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * Copyright 2010 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of JogAmp Community.
- */
-package com.jogamp.nativewindow.impl.jawt;
-
-import javax.media.nativewindow.ToolkitLock;
-
-/**
- * Implementing a singleton global recursive {@link javax.media.nativewindow.ToolkitLock}
- * utilizing JAWT's AWT lock via {@link JAWTUtil#lockToolkit()}.
- * <br>
- * This strategy should only be used if AWT is using the underlying native windowing toolkit
- * in a not intrinsic thread safe manner, e.g. under X11 where no XInitThreads() call
- * is issued before any other X11 usage. This is the current situation for e.g. Webstart or Applets.
- */
-public class JAWTToolkitLock implements ToolkitLock {
-
- /** Singleton via {@link JAWTUtil#getJAWTToolkitLock()} */
- protected JAWTToolkitLock() {}
-
- public final void lock() {
- if(TRACE_LOCK) { System.err.println("JAWTToolkitLock.lock()"); }
- JAWTUtil.lockToolkit();
- }
-
- public final void unlock() {
- if(TRACE_LOCK) { System.err.println("JAWTToolkitLock.unlock()"); }
- JAWTUtil.unlockToolkit();
- }
-}
diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/JAWTUtil.java b/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/JAWTUtil.java
deleted file mode 100644
index 0c6fc3f55..000000000
--- a/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/JAWTUtil.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
- * Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * - Redistribution of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistribution in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * Neither the name of Sun Microsystems, Inc. or the names of
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * This software is provided "AS IS," without a warranty of any kind. ALL
- * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
- * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
- * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
- * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
- * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
- * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
- * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
- * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
- * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
- * You acknowledge that this software is not designed or intended for use
- * in the design, construction, operation or maintenance of any nuclear
- * facility.
- */
-
-package com.jogamp.nativewindow.impl.jawt;
-
-import com.jogamp.nativewindow.impl.*;
-import java.awt.EventQueue;
-
-import javax.media.nativewindow.*;
-
-
-import java.awt.GraphicsEnvironment;
-import java.awt.Toolkit;
-import java.lang.reflect.*;
-import java.security.*;
-import java.util.ArrayList;
-import java.util.Map;
-
-public class JAWTUtil {
- protected static final boolean DEBUG = Debug.debug("JAWT");
-
- // See whether we're running in headless mode
- private static final boolean headlessMode;
-
- // Java2D magic ..
- private static final Method isQueueFlusherThread;
- private static final boolean j2dExist;
-
- private static Class sunToolkitClass;
- private static Method sunToolkitAWTLockMethod;
- private static Method sunToolkitAWTUnlockMethod;
- private static boolean hasSunToolkitAWTLock;
-
- private static final JAWTToolkitLock jawtToolkitLock;
-
- static {
- JAWTJNILibLoader.loadAWTImpl();
- JAWTJNILibLoader.loadNativeWindow("awt");
-
- headlessMode = GraphicsEnvironment.isHeadless();
-
- boolean ok = false;
- Class jC = null;
- Method m = null;
- if (!headlessMode) {
- try {
- jC = Class.forName("com.jogamp.opengl.impl.awt.Java2D");
- m = jC.getMethod("isQueueFlusherThread", null);
- ok = true;
- } catch (Exception e) {
- }
- }
- isQueueFlusherThread = m;
- j2dExist = ok;
-
- AccessController.doPrivileged(new PrivilegedAction() {
- public Object run() {
- try {
- sunToolkitClass = Class.forName("sun.awt.SunToolkit");
- sunToolkitAWTLockMethod = sunToolkitClass.getDeclaredMethod("awtLock", new Class[]{});
- sunToolkitAWTLockMethod.setAccessible(true);
- sunToolkitAWTUnlockMethod = sunToolkitClass.getDeclaredMethod("awtUnlock", new Class[]{});
- sunToolkitAWTUnlockMethod.setAccessible(true);
- } catch (Exception e) {
- // Either not a Sun JDK or the interfaces have changed since 1.4.2 / 1.5
- }
- return null;
- }
- });
- boolean _hasSunToolkitAWTLock = false;
- if (null != sunToolkitAWTLockMethod && null != sunToolkitAWTUnlockMethod) {
- try {
- sunToolkitAWTLockMethod.invoke(null, null);
- sunToolkitAWTUnlockMethod.invoke(null, null);
- _hasSunToolkitAWTLock = true;
- } catch (Exception e) {
- }
- }
- hasSunToolkitAWTLock = _hasSunToolkitAWTLock;
- // hasSunToolkitAWTLock = false;
-
- jawtToolkitLock = new JAWTToolkitLock();
-
- // trigger native AWT toolkit / properties initialization
- Map desktophints = null;
- try {
- if(EventQueue.isDispatchThread()) {
- desktophints = (Map)(Toolkit.getDefaultToolkit().getDesktopProperty("awt.font.desktophints"));
- } else {
- final ArrayList desktophintsBucket = new ArrayList(1);
- EventQueue.invokeAndWait(new Runnable() {
- public void run() {
- Map _desktophints = (Map)(Toolkit.getDefaultToolkit().getDesktopProperty("awt.font.desktophints"));
- if(null!=_desktophints) {
- desktophintsBucket.add(_desktophints);
- }
- }
- });
- desktophints = ( desktophintsBucket.size() > 0 ) ? (Map)desktophintsBucket.get(0) : null ;
- }
- } catch (InterruptedException ex) {
- ex.printStackTrace();
- } catch (InvocationTargetException ex) {
- ex.printStackTrace();
- }
-
- if (DEBUG) {
- System.err.println("JAWTUtil: Has sun.awt.SunToolkit.awtLock/awtUnlock " + hasSunToolkitAWTLock);
- System.err.println("JAWTUtil: Has Java2D " + j2dExist);
- System.err.println("JAWTUtil: Is headless " + headlessMode);
- int hints = ( null != desktophints ) ? desktophints.size() : 0 ;
- System.err.println("JAWTUtil: AWT Desktop hints " + hints);
- }
- }
-
- public static void initSingleton() {
- // just exist to ensure static init has been run
- }
-
-
- 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;
- }
-
- /**
- * Locks the AWT's global ReentrantLock.<br>
- *
- * JAWT's native Lock() function calls SunToolkit.awtLock(),
- * which just uses AWT's global ReentrantLock.<br>
- */
- public static void awtLock() {
- if(hasSunToolkitAWTLock) {
- try {
- sunToolkitAWTLockMethod.invoke(null, null);
- } catch (Exception e) {
- throw new NativeWindowException("SunToolkit.awtLock failed", e);
- }
- } else {
- JAWT.getJAWT().Lock();
- }
- }
-
- /**
- * Unlocks the AWT's global ReentrantLock.<br>
- *
- * JAWT's native Unlock() function calls SunToolkit.awtUnlock(),
- * which just uses AWT's global ReentrantLock.<br>
- */
- public static void awtUnlock() {
- if(hasSunToolkitAWTLock) {
- try {
- sunToolkitAWTUnlockMethod.invoke(null, null);
- } catch (Exception e) {
- throw new NativeWindowException("SunToolkit.awtUnlock failed", e);
- }
- } else {
- JAWT.getJAWT().Unlock();
- }
- }
-
- public static void lockToolkit() throws NativeWindowException {
- if(!headlessMode && !isJava2DQueueFlusherThread()) {
- awtLock();
- }
- }
-
- public static void unlockToolkit() {
- if(!headlessMode && !isJava2DQueueFlusherThread()) {
- awtUnlock();
- }
- }
-
- public static JAWTToolkitLock getJAWTToolkitLock() {
- return jawtToolkitLock;
- }
-}
-
diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/JAWTWindow.java b/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/JAWTWindow.java
deleted file mode 100644
index de6360212..000000000
--- a/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/JAWTWindow.java
+++ /dev/null
@@ -1,277 +0,0 @@
-/*
- * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
- * Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * - Redistribution of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistribution in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * Neither the name of Sun Microsystems, Inc. or the names of
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * This software is provided "AS IS," without a warranty of any kind. ALL
- * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
- * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
- * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
- * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
- * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
- * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
- * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
- * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
- * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
- * You acknowledge that this software is not designed or intended for use
- * in the design, construction, operation or maintenance of any nuclear
- * facility.
- */
-
-package com.jogamp.nativewindow.impl.jawt;
-
-import com.jogamp.common.util.locks.RecursiveLock;
-
-import java.awt.Component;
-import java.awt.Window;
-import javax.media.nativewindow.AbstractGraphicsConfiguration;
-import javax.media.nativewindow.NativeSurface;
-import javax.media.nativewindow.NativeWindow;
-import javax.media.nativewindow.NativeWindowException;
-import javax.media.nativewindow.util.Point;
-import javax.media.nativewindow.util.Rectangle;
-
-public abstract class JAWTWindow implements NativeWindow {
- protected static final boolean DEBUG = JAWTUtil.DEBUG;
-
- // lifetime: forever
- protected Component component;
- protected AbstractGraphicsConfiguration config;
-
- // lifetime: valid after lock, forever until invalidate
- protected long drawable;
- protected Rectangle bounds;
-
- public JAWTWindow(Object comp, AbstractGraphicsConfiguration config) {
- if (config == null) {
- throw new NativeWindowException("Error: AbstractGraphicsConfiguration is null");
- }
- this.config = config;
- init((Component)comp);
- }
-
- private final void init(Component windowObject) throws NativeWindowException {
- invalidate();
- this.component = windowObject;
- validateNative();
- }
- protected abstract void validateNative() throws NativeWindowException;
-
- protected synchronized void invalidate() {
- component = null;
- drawable= 0;
- bounds = new Rectangle();
- }
-
- protected final void updateBounds(JAWT_Rectangle jawtBounds) {
- bounds.setX(jawtBounds.getX());
- bounds.setY(jawtBounds.getY());
- bounds.setWidth(jawtBounds.getWidth());
- bounds.setHeight(jawtBounds.getHeight());
- }
-
- /** @return the JAWT_DrawingSurfaceInfo's (JAWT_Rectangle) bounds, updated with lock */
- public final Rectangle getBounds() { return bounds; }
-
- public final Component getAWTComponent() {
- return component;
- }
-
- //
- // SurfaceUpdateListener
- //
-
- public final void surfaceUpdated(Object updater, NativeSurface ns, long when) {
- // nop
- }
-
- //
- // NativeSurface
- //
-
- private RecursiveLock recurLock = new RecursiveLock();
-
- protected abstract int lockSurfaceImpl() throws NativeWindowException;
-
- public final int lockSurface() throws NativeWindowException {
- int res = LOCK_SURFACE_NOT_READY;
-
- recurLock.lock();
-
- if(recurLock.getRecursionCount() == 0) {
- config.getScreen().getDevice().lock();
- try {
- res = lockSurfaceImpl();
- } finally {
- // Unlock in case surface couldn't be locked
- if(LOCK_SURFACE_NOT_READY >= res ) {
- config.getScreen().getDevice().unlock();
- recurLock.unlock();
- }
- }
- } else {
- res = LOCK_SUCCESS;
- }
-
- return res;
- }
-
- protected abstract void unlockSurfaceImpl() throws NativeWindowException;
-
- public final void unlockSurface() {
- recurLock.validateLocked();
-
- if(recurLock.getRecursionCount()==0) {
- try {
- unlockSurfaceImpl();
- } finally {
- config.getScreen().getDevice().unlock();
- }
- }
- recurLock.unlock();
- }
-
- public final boolean isSurfaceLockedByOtherThread() {
- return recurLock.isLockedByOtherThread();
- }
-
- public final boolean isSurfaceLocked() {
- return recurLock.isLocked();
- }
-
- public final Thread getSurfaceLockOwner() {
- return recurLock.getOwner();
- }
-
- public final boolean surfaceSwap() {
- return false;
- }
-
- public final void surfaceUpdated(Object updater, NativeWindow window, long when) { }
-
- public final long getSurfaceHandle() {
- return drawable;
- }
- public final AbstractGraphicsConfiguration getGraphicsConfiguration() {
- return config;
- }
-
- public final long getDisplayHandle() {
- return config.getScreen().getDevice().getHandle();
- }
-
- public final int getScreenIndex() {
- return config.getScreen().getIndex();
- }
-
- public final void setSize(int width, int height) {
- component.setSize(width, height);
- }
-
- public final int getWidth() {
- return component.getWidth();
- }
-
- public final int getHeight() {
- return component.getHeight();
- }
-
- //
- // NativeWindow
- //
-
- public synchronized void destroy() {
- if(null!=component) {
- if(component instanceof Window) {
- ((Window)component).dispose();
- }
- }
- invalidate();
- }
-
- public final NativeWindow getParent() {
- return null;
- }
-
- public long getWindowHandle() {
- return drawable;
- }
-
- public final int getX() {
- return component.getX();
- }
-
- public final int getY() {
- return component.getY();
- }
-
- public Point getLocationOnScreen(Point storage) {
- if( 0 != getWindowHandle() ) {
- Point d;
- // windowLock.lock();
- try {
- d = getLocationOnScreenImpl(0, 0);
- } finally {
- // windowLock.unlock();
- }
- if(null!=d) {
- if(null!=storage) {
- storage.translate(d.getX(),d.getY());
- return storage;
- }
- return d;
- }
- // fall through intended ..
- }
-
- if(!Thread.holdsLock(component.getTreeLock())) {
- return null; // avoid deadlock ..
- }
- java.awt.Point awtLOS = component.getLocationOnScreen();
- int dx = (int) ( awtLOS.getX() + .5 ) ;
- int dy = (int) ( awtLOS.getY() + .5 ) ;
- if(null!=storage) {
- return storage.translate(dx, dy);
- }
- return new Point(dx, dy);
- }
- protected abstract Point getLocationOnScreenImpl(int x, int y);
-
- public String toString() {
- StringBuffer sb = new StringBuffer();
-
- sb.append("JAWT-Window["+
- "windowHandle 0x"+Long.toHexString(getWindowHandle())+
- ", surfaceHandle 0x"+Long.toHexString(getSurfaceHandle())+
- ", bounds "+bounds);
- if(null!=component) {
- sb.append(", pos "+getX()+"/"+getY()+", size "+getWidth()+"x"+getHeight()+
- ", visible "+component.isVisible());
- } else {
- sb.append(", component NULL");
- }
- sb.append(", lockedExt "+isSurfaceLockedByOtherThread()+
- ",\n\tconfig "+config+
- ",\n\tawtComponent "+getAWTComponent()+"]");
-
- return sb.toString();
- }
-
-}
diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/JAWT_PlatformInfo.java b/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/JAWT_PlatformInfo.java
deleted file mode 100644
index d49e2f8d0..000000000
--- a/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/JAWT_PlatformInfo.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * - Redistribution of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistribution in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * Neither the name of Sun Microsystems, Inc. or the names of
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * This software is provided "AS IS," without a warranty of any kind. ALL
- * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
- * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
- * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
- * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
- * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
- * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
- * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
- * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
- * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
- * You acknowledge that this software is not designed or intended for use
- * in the design, construction, operation or maintenance of any nuclear
- * facility.
- *
- * Sun gratefully acknowledges that this software was originally authored
- * and developed by Kenneth Bradley Russell and Christopher John Kline.
- */
-
-package com.jogamp.nativewindow.impl.jawt;
-
-import com.jogamp.nativewindow.impl.*;
-
-/** Marker class for all window system-specific JAWT data structures. */
-
-public interface JAWT_PlatformInfo {
-}
diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/macosx/MacOSXJAWTWindow.java b/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/macosx/MacOSXJAWTWindow.java
deleted file mode 100644
index fc5607707..000000000
--- a/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/macosx/MacOSXJAWTWindow.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
- * Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * - Redistribution of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistribution in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * Neither the name of Sun Microsystems, Inc. or the names of
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * This software is provided "AS IS," without a warranty of any kind. ALL
- * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
- * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
- * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
- * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
- * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
- * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
- * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
- * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
- * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
- * You acknowledge that this software is not designed or intended for use
- * in the design, construction, operation or maintenance of any nuclear
- * facility.
- *
- * Sun gratefully acknowledges that this software was originally authored
- * and developed by Kenneth Bradley Russell and Christopher John Kline.
- */
-
-package com.jogamp.nativewindow.impl.jawt.macosx;
-
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-
-import javax.media.nativewindow.AbstractGraphicsConfiguration;
-import javax.media.nativewindow.NativeWindow;
-import javax.media.nativewindow.NativeWindowException;
-import javax.media.nativewindow.util.Point;
-
-import com.jogamp.nativewindow.impl.jawt.JAWT;
-import com.jogamp.nativewindow.impl.jawt.JAWTFactory;
-import com.jogamp.nativewindow.impl.jawt.JAWTWindow;
-import com.jogamp.nativewindow.impl.jawt.JAWT_DrawingSurface;
-import com.jogamp.nativewindow.impl.jawt.JAWT_DrawingSurfaceInfo;
-
-public class MacOSXJAWTWindow extends JAWTWindow {
-
- public MacOSXJAWTWindow(Object comp, AbstractGraphicsConfiguration config) {
- super(comp, config);
- }
-
- protected void validateNative() throws NativeWindowException {
- }
-
- protected int lockSurfaceImpl() throws NativeWindowException {
- int ret = NativeWindow.LOCK_SUCCESS;
- ds = JAWT.getJAWT().GetDrawingSurface(component);
- if (ds == null) {
- // Widget not yet realized
- unlockSurfaceImpl();
- return NativeWindow.LOCK_SURFACE_NOT_READY;
- }
- int res = ds.Lock();
- dsLocked = ( 0 == ( res & JAWTFactory.JAWT_LOCK_ERROR ) ) ;
- if (!dsLocked) {
- unlockSurfaceImpl();
- throw new NativeWindowException("Unable to lock surface");
- }
- // See whether the surface changed and if so destroy the old
- // OpenGL context so it will be recreated (NOTE: removeNotify
- // should handle this case, but it may be possible that race
- // conditions can cause this code to be triggered -- should test
- // more)
- if ((res & JAWTFactory.JAWT_LOCK_SURFACE_CHANGED) != 0) {
- ret = NativeWindow.LOCK_SURFACE_CHANGED;
- }
- if (firstLock) {
- AccessController.doPrivileged(new PrivilegedAction() {
- public Object run() {
- dsi = ds.GetDrawingSurfaceInfo();
- return null;
- }
- });
- } else {
- dsi = ds.GetDrawingSurfaceInfo();
- }
- if (dsi == null) {
- unlockSurfaceImpl();
- return NativeWindow.LOCK_SURFACE_NOT_READY;
- }
- firstLock = false;
- macosxdsi = (JAWT_MacOSXDrawingSurfaceInfo) dsi.platformInfo();
- if (macosxdsi == null) {
- unlockSurfaceImpl();
- return NativeWindow.LOCK_SURFACE_NOT_READY;
- }
- drawable = macosxdsi.getCocoaViewRef();
-
- if (drawable == 0) {
- unlockSurfaceImpl();
- return NativeWindow.LOCK_SURFACE_NOT_READY;
- } else {
- updateBounds(dsi.getBounds());
- }
- return ret;
- }
-
- protected void unlockSurfaceImpl() throws NativeWindowException {
- if(null!=ds) {
- if (null!=dsi) {
- ds.FreeDrawingSurfaceInfo(dsi);
- }
- if (dsLocked) {
- ds.Unlock();
- }
- JAWT.getJAWT().FreeDrawingSurface(ds);
- }
- ds = null;
- dsi = null;
- macosxdsi = null;
- }
-
- protected Point getLocationOnScreenImpl(int x, int y) {
- return null; // FIXME
- }
-
- // Variables for lockSurface/unlockSurface
- private JAWT_DrawingSurface ds;
- private boolean dsLocked;
- private JAWT_DrawingSurfaceInfo dsi;
- private JAWT_MacOSXDrawingSurfaceInfo macosxdsi;
-
- // Workaround for instance of 4796548
- private boolean firstLock = true;
-
-}
-
diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/windows/Win32SunJDKReflection.java b/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/windows/Win32SunJDKReflection.java
deleted file mode 100644
index 05d31a40e..000000000
--- a/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/windows/Win32SunJDKReflection.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
- * Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * - Redistribution of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistribution in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * Neither the name of Sun Microsystems, Inc. or the names of
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * This software is provided "AS IS," without a warranty of any kind. ALL
- * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
- * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
- * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
- * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
- * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
- * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
- * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
- * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
- * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
- * You acknowledge that this software is not designed or intended for use
- * in the design, construction, operation or maintenance of any nuclear
- * facility.
- *
- * Sun gratefully acknowledges that this software was originally authored
- * and developed by Kenneth Bradley Russell and Christopher John Kline.
- */
-
-package com.jogamp.nativewindow.impl.jawt.windows;
-
-import java.awt.GraphicsConfiguration;
-import java.awt.GraphicsDevice;
-
-import java.lang.reflect.Method;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-
-import javax.media.nativewindow.AbstractGraphicsConfiguration;
-import javax.media.nativewindow.awt.AWTGraphicsConfiguration;
-
-/** This class encapsulates the reflection routines necessary to peek
- inside a few data structures in the AWT implementation on X11 for
- the purposes of correctly enumerating the available visuals. */
-
-public class Win32SunJDKReflection {
- private static Class win32GraphicsDeviceClass;
- private static Class win32GraphicsConfigClass;
- private static Method win32GraphicsConfigGetConfigMethod;
- private static Method win32GraphicsConfigGetVisualMethod;
- private static boolean initted;
-
- static {
- AccessController.doPrivileged(new PrivilegedAction() {
- public Object run() {
- try {
- win32GraphicsDeviceClass = Class.forName("sun.awt.Win32GraphicsDevice");
- win32GraphicsConfigClass = Class.forName("sun.awt.Win32GraphicsConfig");
- win32GraphicsConfigGetConfigMethod = win32GraphicsConfigClass.getDeclaredMethod("getConfig", new Class[] { win32GraphicsDeviceClass, int.class });
- win32GraphicsConfigGetConfigMethod.setAccessible(true);
- win32GraphicsConfigGetVisualMethod = win32GraphicsConfigClass.getDeclaredMethod("getVisual", new Class[] {});
- win32GraphicsConfigGetVisualMethod.setAccessible(true);
- initted = true;
- } catch (Exception e) {
- // Either not a Sun JDK or the interfaces have changed since 1.4.2 / 1.5
- }
- return null;
- }
- });
- }
-
- public static GraphicsConfiguration graphicsConfigurationGet(GraphicsDevice device, int pfdID) {
- if (!initted) {
- return null;
- }
-
- try {
- return (GraphicsConfiguration) win32GraphicsConfigGetConfigMethod.invoke(null, new Object[] { device, new Integer(pfdID) });
- } catch (Exception e) {
- return null;
- }
- }
-
- public static int graphicsConfigurationGetPixelFormatID(AbstractGraphicsConfiguration config) {
- try {
- if (config instanceof AWTGraphicsConfiguration) {
- return graphicsConfigurationGetPixelFormatID(((AWTGraphicsConfiguration) config).getGraphicsConfiguration());
- }
- return 0;
- } catch (Exception e) {
- return 0;
- }
- }
-
- public static int graphicsConfigurationGetPixelFormatID(GraphicsConfiguration config) {
- if (!initted) {
- return 0;
- }
-
- try {
- return ((Integer) win32GraphicsConfigGetVisualMethod.invoke(config, null)).intValue();
- } catch (Exception e) {
- return 0;
- }
- }
-}
diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/windows/WindowsJAWTWindow.java b/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/windows/WindowsJAWTWindow.java
deleted file mode 100644
index d7cd55f9a..000000000
--- a/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/windows/WindowsJAWTWindow.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
- * Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * - Redistribution of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistribution in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * Neither the name of Sun Microsystems, Inc. or the names of
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * This software is provided "AS IS," without a warranty of any kind. ALL
- * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
- * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
- * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
- * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
- * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
- * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
- * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
- * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
- * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
- * You acknowledge that this software is not designed or intended for use
- * in the design, construction, operation or maintenance of any nuclear
- * facility.
- *
- * Sun gratefully acknowledges that this software was originally authored
- * and developed by Kenneth Bradley Russell and Christopher John Kline.
- */
-
-package com.jogamp.nativewindow.impl.jawt.windows;
-
-import javax.media.nativewindow.AbstractGraphicsConfiguration;
-import javax.media.nativewindow.NativeWindow;
-import javax.media.nativewindow.NativeWindowException;
-import javax.media.nativewindow.util.Point;
-
-import com.jogamp.nativewindow.impl.jawt.JAWT;
-import com.jogamp.nativewindow.impl.jawt.JAWTFactory;
-import com.jogamp.nativewindow.impl.jawt.JAWTWindow;
-import com.jogamp.nativewindow.impl.jawt.JAWT_DrawingSurface;
-import com.jogamp.nativewindow.impl.jawt.JAWT_DrawingSurfaceInfo;
-import com.jogamp.nativewindow.impl.windows.GDI;
-
-public class WindowsJAWTWindow extends JAWTWindow {
-
- public WindowsJAWTWindow(Object comp, AbstractGraphicsConfiguration config) {
- super(comp, config);
- }
-
- protected void validateNative() throws NativeWindowException {
- }
-
- protected synchronized void invalidate() {
- super.invalidate();
- windowHandle = 0;
- }
-
- protected int lockSurfaceImpl() throws NativeWindowException {
- int ret = NativeWindow.LOCK_SUCCESS;
- ds = JAWT.getJAWT().GetDrawingSurface(component);
- if (ds == null) {
- // Widget not yet realized
- unlockSurfaceImpl();
- return LOCK_SURFACE_NOT_READY;
- }
- int res = ds.Lock();
- dsLocked = ( 0 == ( res & JAWTFactory.JAWT_LOCK_ERROR ) ) ;
- if (!dsLocked) {
- unlockSurfaceImpl();
- throw new NativeWindowException("Unable to lock surface");
- }
- // See whether the surface changed and if so destroy the old
- // OpenGL context so it will be recreated (NOTE: removeNotify
- // should handle this case, but it may be possible that race
- // conditions can cause this code to be triggered -- should test
- // more)
- if ((res & JAWTFactory.JAWT_LOCK_SURFACE_CHANGED) != 0) {
- ret = LOCK_SURFACE_CHANGED;
- }
- dsi = ds.GetDrawingSurfaceInfo();
- if (dsi == null) {
- unlockSurfaceImpl();
- return LOCK_SURFACE_NOT_READY;
- }
- win32dsi = (JAWT_Win32DrawingSurfaceInfo) dsi.platformInfo();
- if (win32dsi == null) {
- unlockSurfaceImpl();
- return LOCK_SURFACE_NOT_READY;
- }
- windowHandle = win32dsi.getHandle();
- drawable = win32dsi.getHdc();
- if (windowHandle == 0 || drawable == 0) {
- unlockSurfaceImpl();
- return LOCK_SURFACE_NOT_READY;
- } else {
- updateBounds(dsi.getBounds());
- }
- return ret;
- }
-
- protected void unlockSurfaceImpl() throws NativeWindowException {
- long startTime = 0;
- if(null!=ds) {
- if (null!=dsi) {
- ds.FreeDrawingSurfaceInfo(dsi);
- }
- if (dsLocked) {
- ds.Unlock();
- }
- JAWT.getJAWT().FreeDrawingSurface(ds);
- }
- ds = null;
- dsi = null;
- win32dsi = null;
- }
-
- public long getWindowHandle() {
- return windowHandle;
- }
-
- protected Point getLocationOnScreenImpl(int x, int y) {
- return GDI.GetRelativeLocation( getWindowHandle(), 0 /*root win*/, x, y);
- }
-
- // Variables for lockSurface/unlockSurface
- private JAWT_DrawingSurface ds;
- private boolean dsLocked;
- private JAWT_DrawingSurfaceInfo dsi;
- private JAWT_Win32DrawingSurfaceInfo win32dsi;
-
- // lifetime: valid after lock, forever until invalidate
- protected long windowHandle;
-}
-
diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/x11/X11JAWTToolkitLock.java b/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/x11/X11JAWTToolkitLock.java
deleted file mode 100644
index 7eaac2ca6..000000000
--- a/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/x11/X11JAWTToolkitLock.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- * Copyright 2010 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of JogAmp Community.
- */
-package com.jogamp.nativewindow.impl.jawt.x11;
-
-import com.jogamp.nativewindow.impl.jawt.*;
-import com.jogamp.nativewindow.impl.x11.X11Util;
-import javax.media.nativewindow.ToolkitLock;
-
-/**
- * Implementing a recursive {@link javax.media.nativewindow.ToolkitLock}
- * utilizing JAWT's AWT lock via {@link JAWTUtil#lockToolkit()} and {@link X11Util#XLockDisplay(long)}.
- * <br>
- * This strategy should only be used if AWT is using the underlying native windowing toolkit
- * in a not intrinsic thread safe manner, e.g. under X11 where no XInitThreads() call
- * is issued before any other X11 usage. This is the current situation for e.g. Webstart or Applets.
- */
-public class X11JAWTToolkitLock implements ToolkitLock {
- long displayHandle;
-
- public X11JAWTToolkitLock(long displayHandle) {
- this.displayHandle = displayHandle;
- }
-
- public final void lock() {
- if(TRACE_LOCK) { System.err.println("X11JAWTToolkitLock.lock()"); }
- JAWTUtil.lockToolkit();
- X11Util.XLockDisplay(displayHandle);
- }
-
- public final void unlock() {
- if(TRACE_LOCK) { System.err.println("X11JAWTToolkitLock.unlock()"); }
- X11Util.XUnlockDisplay(displayHandle);
- JAWTUtil.unlockToolkit();
- }
-}
diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/x11/X11JAWTWindow.java b/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/x11/X11JAWTWindow.java
deleted file mode 100644
index f87558dbc..000000000
--- a/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/x11/X11JAWTWindow.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
- * Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * - Redistribution of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistribution in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * Neither the name of Sun Microsystems, Inc. or the names of
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * This software is provided "AS IS," without a warranty of any kind. ALL
- * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
- * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
- * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
- * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
- * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
- * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
- * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
- * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
- * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
- * You acknowledge that this software is not designed or intended for use
- * in the design, construction, operation or maintenance of any nuclear
- * facility.
- */
-
-package com.jogamp.nativewindow.impl.jawt.x11;
-
-import javax.media.nativewindow.AbstractGraphicsConfiguration;
-import javax.media.nativewindow.AbstractGraphicsDevice;
-import javax.media.nativewindow.AbstractGraphicsScreen;
-import javax.media.nativewindow.NativeWindow;
-import javax.media.nativewindow.NativeWindowException;
-import javax.media.nativewindow.NativeWindowFactory;
-import javax.media.nativewindow.awt.AWTGraphicsDevice;
-import javax.media.nativewindow.util.Point;
-
-import com.jogamp.nativewindow.impl.jawt.JAWT;
-import com.jogamp.nativewindow.impl.jawt.JAWTFactory;
-import com.jogamp.nativewindow.impl.jawt.JAWTWindow;
-import com.jogamp.nativewindow.impl.jawt.JAWT_DrawingSurface;
-import com.jogamp.nativewindow.impl.jawt.JAWT_DrawingSurfaceInfo;
-import com.jogamp.nativewindow.impl.x11.X11Util;
-
-public class X11JAWTWindow extends JAWTWindow {
-
- public X11JAWTWindow(Object comp, AbstractGraphicsConfiguration config) {
- super(comp, config);
- }
-
- protected void validateNative() throws NativeWindowException {
- AWTGraphicsDevice awtDevice = (AWTGraphicsDevice) config.getScreen().getDevice();
-
- if(awtDevice.getHandle() != 0) {
- // subtype and handle set already, done
- return;
- }
-
- long displayHandle = 0;
-
- // first try a pre-existing attached native configuration, ie native X11GraphicsDevice
- AbstractGraphicsConfiguration aconfig = (null!=config) ? config.getNativeGraphicsConfiguration() : null;
- AbstractGraphicsScreen ascreen = (null!=aconfig) ? aconfig.getScreen() : null;
- AbstractGraphicsDevice adevice = (null!=ascreen) ? ascreen.getDevice() : null; // X11GraphicsDevice
- if(null!=adevice) {
- displayHandle = adevice.getHandle();
- }
-
- if(0 == displayHandle) {
- displayHandle = X11SunJDKReflection.graphicsDeviceGetDisplay(awtDevice.getGraphicsDevice());
- }
- if(0==displayHandle) {
- throw new InternalError("X11JAWTWindow: No X11 Display handle available");
- }
- awtDevice.setSubType(NativeWindowFactory.TYPE_X11, displayHandle);
- }
-
- protected int lockSurfaceImpl() throws NativeWindowException {
- int ret = NativeWindow.LOCK_SUCCESS;
- ds = JAWT.getJAWT().GetDrawingSurface(component);
- if (ds == null) {
- // Widget not yet realized
- unlockSurfaceImpl();
- return LOCK_SURFACE_NOT_READY;
- }
- int res = ds.Lock();
- dsLocked = ( 0 == ( res & JAWTFactory.JAWT_LOCK_ERROR ) ) ;
- if (!dsLocked) {
- unlockSurfaceImpl();
- throw new NativeWindowException("Unable to lock surface");
- }
- // See whether the surface changed and if so destroy the old
- // OpenGL context so it will be recreated (NOTE: removeNotify
- // should handle this case, but it may be possible that race
- // conditions can cause this code to be triggered -- should test
- // more)
- if ((res & JAWTFactory.JAWT_LOCK_SURFACE_CHANGED) != 0) {
- ret = LOCK_SURFACE_CHANGED;
- }
- dsi = ds.GetDrawingSurfaceInfo();
- if (dsi == null) {
- unlockSurfaceImpl();
- return LOCK_SURFACE_NOT_READY;
- }
- x11dsi = (JAWT_X11DrawingSurfaceInfo) dsi.platformInfo();
- if (x11dsi == null) {
- unlockSurfaceImpl();
- return LOCK_SURFACE_NOT_READY;
- }
- drawable = x11dsi.getDrawable();
- if (drawable == 0) {
- unlockSurfaceImpl();
- return LOCK_SURFACE_NOT_READY;
- } else {
- updateBounds(dsi.getBounds());
- }
- return ret;
- }
-
- protected void unlockSurfaceImpl() throws NativeWindowException {
- if(null!=ds) {
- if (null!=dsi) {
- ds.FreeDrawingSurfaceInfo(dsi);
- }
- if (dsLocked) {
- ds.Unlock();
- }
- JAWT.getJAWT().FreeDrawingSurface(ds);
- }
- ds = null;
- dsi = null;
- x11dsi = null;
- }
-
- protected Point getLocationOnScreenImpl(int x, int y) {
- return X11Util.GetRelativeLocation( getDisplayHandle(), getScreenIndex(), getWindowHandle(), 0 /*root win*/, x, y);
- }
-
- // Variables for lockSurface/unlockSurface
- private JAWT_DrawingSurface ds;
- private boolean dsLocked;
- private JAWT_DrawingSurfaceInfo dsi;
- private JAWT_X11DrawingSurfaceInfo x11dsi;
-
-}
diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/x11/X11SunJDKReflection.java b/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/x11/X11SunJDKReflection.java
deleted file mode 100644
index b4a99624c..000000000
--- a/src/nativewindow/classes/com/jogamp/nativewindow/impl/jawt/x11/X11SunJDKReflection.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
- * Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * - Redistribution of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistribution in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * Neither the name of Sun Microsystems, Inc. or the names of
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * This software is provided "AS IS," without a warranty of any kind. ALL
- * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
- * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
- * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
- * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
- * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
- * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
- * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
- * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
- * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- *
- * You acknowledge that this software is not designed or intended for use
- * in the design, construction, operation or maintenance of any nuclear
- * facility.
- *
- * Sun gratefully acknowledges that this software was originally authored
- * and developed by Kenneth Bradley Russell and Christopher John Kline.
- */
-
-package com.jogamp.nativewindow.impl.jawt.x11;
-
-import java.awt.GraphicsConfiguration;
-import java.awt.GraphicsDevice;
-
-import java.lang.reflect.Method;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-
-import javax.media.nativewindow.AbstractGraphicsConfiguration;
-import javax.media.nativewindow.awt.AWTGraphicsConfiguration;
-
-/** This class encapsulates the reflection routines necessary to peek
- inside a few data structures in the AWT implementation on X11 for
- the purposes of correctly enumerating the available visuals. */
-
-public class X11SunJDKReflection {
- private static Class x11GraphicsDeviceClass;
- private static Method x11GraphicsDeviceGetDisplayMethod;
- private static Class x11GraphicsConfigClass;
- private static Method x11GraphicsConfigGetVisualMethod;
- private static boolean initted;
-
- static {
- AccessController.doPrivileged(new PrivilegedAction() {
- public Object run() {
- try {
- x11GraphicsDeviceClass = Class.forName("sun.awt.X11GraphicsDevice");
- x11GraphicsDeviceGetDisplayMethod = x11GraphicsDeviceClass.getDeclaredMethod("getDisplay", new Class[] {});
- x11GraphicsDeviceGetDisplayMethod.setAccessible(true);
-
- x11GraphicsConfigClass = Class.forName("sun.awt.X11GraphicsConfig");
- x11GraphicsConfigGetVisualMethod = x11GraphicsConfigClass.getDeclaredMethod("getVisual", new Class[] {});
- x11GraphicsConfigGetVisualMethod.setAccessible(true);
- initted = true;
- } catch (Exception e) {
- // Either not a Sun JDK or the interfaces have changed since 1.4.2 / 1.5
- }
- return null;
- }
- });
- }
-
- public static long graphicsDeviceGetDisplay(GraphicsDevice device) {
- if (!initted) {
- return 0;
- }
-
- try {
- return ((Long) x11GraphicsDeviceGetDisplayMethod.invoke(device, null)).longValue();
- } catch (Exception e) {
- return 0;
- }
- }
-
- public static int graphicsConfigurationGetVisualID(AbstractGraphicsConfiguration config) {
- try {
- if (config instanceof AWTGraphicsConfiguration) {
- return graphicsConfigurationGetVisualID(((AWTGraphicsConfiguration) config).getGraphicsConfiguration());
- }
- return 0;
- } catch (Exception e) {
- return 0;
- }
- }
-
- public static int graphicsConfigurationGetVisualID(GraphicsConfiguration config) {
- if (!initted) {
- return 0;
- }
-
- try {
- return ((Integer) x11GraphicsConfigGetVisualMethod.invoke(config, null)).intValue();
- } catch (Exception e) {
- return 0;
- }
- }
-}
diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/impl/windows/RegisteredClass.java b/src/nativewindow/classes/com/jogamp/nativewindow/impl/windows/RegisteredClass.java
deleted file mode 100644
index a30a81948..000000000
--- a/src/nativewindow/classes/com/jogamp/nativewindow/impl/windows/RegisteredClass.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * Copyright 2010 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of JogAmp Community.
- */
-
-package com.jogamp.nativewindow.impl.windows;
-
-public class RegisteredClass {
- long hInstance;
- String className;
-
- RegisteredClass(long hInst, String name) {
- hInstance = hInst;
- className = name;
- }
-
- public final long getHandle() { return hInstance; }
- public final String getName() { return className; }
-
- public final String toString() { return "RegisteredClass[handle 0x"+Long.toHexString(hInstance)+", "+className+"]"; }
-}
diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/impl/windows/RegisteredClassFactory.java b/src/nativewindow/classes/com/jogamp/nativewindow/impl/windows/RegisteredClassFactory.java
deleted file mode 100644
index d04640747..000000000
--- a/src/nativewindow/classes/com/jogamp/nativewindow/impl/windows/RegisteredClassFactory.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/**
- * Copyright 2010 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of JogAmp Community.
- */
-
-package com.jogamp.nativewindow.impl.windows;
-
-import com.jogamp.nativewindow.impl.Debug;
-import java.util.ArrayList;
-import javax.media.nativewindow.NativeWindowException;
-
-public class RegisteredClassFactory {
- static final boolean DEBUG = Debug.debug("RegisteredClass");
- private static ArrayList sharedClasses = new ArrayList();
- private String classBaseName;
- long wndProc;
-
- private RegisteredClass sharedClass = null;
- private int classIter = 0;
- private int sharedRefCount = 0;
- private Object sync = new Object();
-
- /**
- * Intended for a JVM shutdown hook, hence little synchronization
- */
- public static void shutdownSharedClasses() {
- synchronized(sharedClasses) {
- for(int i=0; i<sharedClasses.size(); i++) {
- RegisteredClass sc = (RegisteredClass) sharedClasses.get(i);
- GDI.DestroyWindowClass(sc.getHandle(), sc.getName());
- if(DEBUG) {
- System.err.println("RegisteredClassFactory shutdownSharedClasses "+i+"/"+sharedClasses.size()+": "+sc);
- }
- }
- sharedClasses.clear();
- }
- }
-
- public RegisteredClassFactory(String classBaseName, long wndProc) {
- this.classBaseName = classBaseName;
- this.wndProc = wndProc;
- }
-
- public RegisteredClass getSharedClass() throws NativeWindowException {
- synchronized(sync) {
- if( 0 == sharedRefCount ) {
- if( null != sharedClass ) {
- throw new InternalError("Error ("+sharedRefCount+"): SharedClass not null: "+sharedClass);
- }
- long hInstance = GDI.GetApplicationHandle();
- if( 0 == hInstance ) {
- throw new NativeWindowException("Error: Null ModuleHandle for Application");
- }
- String clazzName = null;
- boolean registered = false;
- while ( !registered && Integer.MAX_VALUE >= classIter ) {
- // Retry with next clazz name, this could happen if more than one JVM is running
- clazzName = classBaseName + classIter;
- classIter++;
- registered = GDI.CreateWindowClass(hInstance, clazzName, wndProc);
- }
- if( !registered ) {
- throw new NativeWindowException("Error: Could not create WindowClass: "+clazzName);
- }
- sharedClass = new RegisteredClass(hInstance, clazzName);
- synchronized(sharedClasses) {
- sharedClasses.add(sharedClass);
- }
- if(DEBUG) {
- System.err.println("RegisteredClassFactory getSharedClass ("+sharedRefCount+") initialized: "+sharedClass);
- }
- } else if ( null == sharedClass ) {
- throw new InternalError("Error ("+sharedRefCount+"): SharedClass is null");
- }
- sharedRefCount++;
- }
- return sharedClass;
- }
-
- public void releaseSharedClass() {
- synchronized(sync) {
- if( 0 == sharedRefCount ) {
- if( null != sharedClass ) {
- throw new InternalError("Error ("+sharedRefCount+"): SharedClass not null: "+sharedClass);
- }
- return;
- }
- sharedRefCount--;
- if( null == sharedClass ) {
- throw new InternalError("Error ("+sharedRefCount+"): SharedClass is null");
- }
- if( 0 == sharedRefCount ) {
- GDI.DestroyWindowClass(sharedClass.getHandle(), sharedClass.getName());
- synchronized(sharedClasses) {
- sharedClasses.remove(sharedClass);
- }
- if(DEBUG) {
- System.err.println("RegisteredClassFactory releaseSharedClass ("+sharedRefCount+") released: "+sharedClass);
- }
- sharedClass = null;
- sharedRefCount = 0;
- classIter = 0;
- }
- }
- }
-
- public int getSharedRefCount() {
- return sharedRefCount;
- }
-}
diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/impl/x11/X11GraphicsConfigurationFactory.java b/src/nativewindow/classes/com/jogamp/nativewindow/impl/x11/X11GraphicsConfigurationFactory.java
deleted file mode 100644
index fec7ca29d..000000000
--- a/src/nativewindow/classes/com/jogamp/nativewindow/impl/x11/X11GraphicsConfigurationFactory.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
- * Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * - Redistribution of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistribution in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * Neither the name of Sun Microsystems, Inc. or the names of
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * This software is provided "AS IS," without a warranty of any kind. ALL
- * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
- * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
- * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
- * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
- * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
- * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
- * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
- * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
- * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- */
-
-package com.jogamp.nativewindow.impl.x11;
-
-import javax.media.nativewindow.*;
-import javax.media.nativewindow.x11.*;
-
-public class X11GraphicsConfigurationFactory extends GraphicsConfigurationFactory {
- protected AbstractGraphicsConfiguration chooseGraphicsConfigurationImpl(
- CapabilitiesImmutable capsChosen, CapabilitiesImmutable capsRequested, CapabilitiesChooser chooser, AbstractGraphicsScreen screen)
- throws IllegalArgumentException, NativeWindowException {
-
- if(!(screen instanceof X11GraphicsScreen)) {
- throw new NativeWindowException("Only valid X11GraphicsScreen are allowed");
- }
- return new X11GraphicsConfiguration((X11GraphicsScreen)screen, capsChosen, capsRequested, getXVisualInfo(screen, capsChosen));
- }
-
- public static XVisualInfo getXVisualInfo(AbstractGraphicsScreen screen, long visualID)
- {
- XVisualInfo xvi_temp = XVisualInfo.create();
- xvi_temp.setVisualid(visualID);
- xvi_temp.setScreen(screen.getIndex());
- int num[] = { -1 };
- long display = screen.getDevice().getHandle();
-
- XVisualInfo[] xvis = X11Util.XGetVisualInfo(display, X11Lib.VisualIDMask|X11Lib.VisualScreenMask, xvi_temp, num, 0);
-
- if(xvis==null || num[0]<1) {
- return null;
- }
-
- return XVisualInfo.create(xvis[0]);
- }
-
- public static XVisualInfo getXVisualInfo(AbstractGraphicsScreen screen, CapabilitiesImmutable capabilities)
- {
- XVisualInfo xv = getXVisualInfoImpl(screen, capabilities, 4 /* TrueColor */);
- if(null!=xv) return xv;
- return getXVisualInfoImpl(screen, capabilities, 5 /* DirectColor */);
- }
-
- private static XVisualInfo getXVisualInfoImpl(AbstractGraphicsScreen screen, CapabilitiesImmutable capabilities, int c_class)
- {
- XVisualInfo ret = null;
- int[] num = { -1 };
-
- XVisualInfo vinfo_template = XVisualInfo.create();
- vinfo_template.setScreen(screen.getIndex());
- vinfo_template.setC_class(c_class);
- long display = screen.getDevice().getHandle();
-
- XVisualInfo[] vinfos = X11Util.XGetVisualInfo(display, X11Lib.VisualScreenMask, vinfo_template, num, 0);
- XVisualInfo best=null;
- int rdepth = capabilities.getRedBits() + capabilities.getGreenBits() + capabilities.getBlueBits() + capabilities.getAlphaBits();
- for (int i = 0; vinfos!=null && i < num[0]; i++) {
- if ( best == null ||
- best.getDepth() < vinfos[i].getDepth() )
- {
- best = vinfos[i];
- if(rdepth <= best.getDepth())
- break;
- }
- }
- if ( null!=best && ( rdepth <= best.getDepth() || 24 == best.getDepth()) ) {
- ret = XVisualInfo.create(best);
- }
- best = null;
-
- return ret;
- }
-}
-
diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/impl/x11/X11ToolkitLock.java b/src/nativewindow/classes/com/jogamp/nativewindow/impl/x11/X11ToolkitLock.java
deleted file mode 100644
index 2e0e911b9..000000000
--- a/src/nativewindow/classes/com/jogamp/nativewindow/impl/x11/X11ToolkitLock.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * Copyright 2010 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of JogAmp Community.
- */
-package com.jogamp.nativewindow.impl.x11;
-
-import javax.media.nativewindow.ToolkitLock;
-
-/**
- * Implementing a recursive {@link javax.media.nativewindow.ToolkitLock}
- * utilizing {@link X11Util#XLockDisplay(long)}.
- * <br>
- * This strategy should not be used in case XInitThreads() is being used,
- * or a higher level toolkit lock is required, ie AWT lock.
- */
-public class X11ToolkitLock implements ToolkitLock {
- long displayHandle;
-
- public X11ToolkitLock(long displayHandle) {
- this.displayHandle = displayHandle;
- }
-
- public final void lock() {
- if(TRACE_LOCK) { System.err.println("X11ToolkitLock.lock()"); }
- X11Util.XLockDisplay(displayHandle);
- }
-
- public final void unlock() {
- if(TRACE_LOCK) { System.err.println("X11ToolkitLock.unlock()"); }
- X11Util.XUnlockDisplay(displayHandle);
- }
-}
diff --git a/src/nativewindow/classes/com/jogamp/nativewindow/impl/x11/X11Util.java b/src/nativewindow/classes/com/jogamp/nativewindow/impl/x11/X11Util.java
deleted file mode 100644
index c56f632d8..000000000
--- a/src/nativewindow/classes/com/jogamp/nativewindow/impl/x11/X11Util.java
+++ /dev/null
@@ -1,610 +0,0 @@
-/*
- * Copyright (c) 2008 Sun Microsystems, Inc. All Rights Reserved.
- * Copyright (c) 2010 JogAmp Community. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * - Redistribution of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistribution in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * Neither the name of Sun Microsystems, Inc. or the names of
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * This software is provided "AS IS," without a warranty of any kind. ALL
- * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
- * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN
- * MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR
- * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
- * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR
- * ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR
- * DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
- * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
- * ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF
- * SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- */
-
-package com.jogamp.nativewindow.impl.x11;
-
-import com.jogamp.common.util.LongObjectHashMap;
-import com.jogamp.nativewindow.impl.Debug;
-import com.jogamp.nativewindow.impl.NWJNILibLoader;
-
-import javax.media.nativewindow.*;
-
-import java.nio.Buffer;
-import java.nio.IntBuffer;
-import java.nio.ShortBuffer;
-import java.security.AccessController;
-import java.util.ArrayList;
-import java.util.List;
-import javax.media.nativewindow.util.Point;
-
-/**
- * Contains a thread safe X11 utility to retrieve display connections.
- */
-public class X11Util {
- private static final boolean DEBUG = Debug.debug("X11Util");
- private static final boolean TRACE_DISPLAY_LIFECYCLE = Debug.getBooleanProperty("nativewindow.debug.X11Util.TraceDisplayLifecycle", true, AccessController.getContext());
-
- private static String nullDisplayName = null;
- private static boolean isFirstX11ActionOnProcess = false;
- private static boolean isInit = false;
-
- private static int setX11ErrorHandlerRecCount = 0;
- private static Object setX11ErrorHandlerLock = new Object();
-
- public static synchronized void initSingleton(boolean firstX11ActionOnProcess) {
- if(!isInit) {
- NWJNILibLoader.loadNativeWindow("x11");
-
- /**
- * Always issue XInitThreads() since we have independent
- * off-thread created Display connections able to utilize multithreading, ie NEWT */
- initialize0( true );
- // initialize0( firstX11ActionOnProcess );
- isFirstX11ActionOnProcess = firstX11ActionOnProcess;
-
- if(DEBUG) {
- System.out.println("X11Util.isFirstX11ActionOnProcess: "+isFirstX11ActionOnProcess);
- }
- isInit = true;
- }
- }
-
- public static void setX11ErrorHandler(boolean onoff, boolean quiet) {
- synchronized(setX11ErrorHandlerLock) {
- if(onoff) {
- if(0==setX11ErrorHandlerRecCount) {
- setX11ErrorHandler0(true, quiet);
- }
- setX11ErrorHandlerRecCount++;
- } else {
- if(0 >= setX11ErrorHandlerRecCount) {
- throw new InternalError();
- }
- setX11ErrorHandlerRecCount--;
- if(0==setX11ErrorHandlerRecCount) {
- setX11ErrorHandler0(false, false);
- }
- }
- }
- }
-
- public static boolean isFirstX11ActionOnProcess() {
- return isFirstX11ActionOnProcess;
- }
-
- public static void lockDefaultToolkit(long dpyHandle) {
- NativeWindowFactory.getDefaultToolkitLock().lock();
- if(!isFirstX11ActionOnProcess) {
- X11Util.XLockDisplay(dpyHandle);
- }
- }
-
- public static void unlockDefaultToolkit(long dpyHandle) {
- if(!isFirstX11ActionOnProcess) {
- X11Util.XUnlockDisplay(dpyHandle);
- }
- NativeWindowFactory.getDefaultToolkitLock().unlock();
- }
-
- public static String getNullDisplayName() {
- if(null==nullDisplayName) {
- synchronized(X11Util.class) {
- if(null==nullDisplayName) {
- NativeWindowFactory.getDefaultToolkitLock().lock();
- try {
- long dpy = X11Lib.XOpenDisplay(null);
- nullDisplayName = X11Lib.XDisplayString(dpy);
- X11Lib.XCloseDisplay(dpy);
- } finally {
- NativeWindowFactory.getDefaultToolkitLock().unlock();
- }
- if(DEBUG) {
- System.out.println("X11 Display(NULL) <"+nullDisplayName+">");
- }
- }
- }
- }
- return nullDisplayName;
- }
-
- private X11Util() {}
-
- // not exactly thread safe, but good enough for our purpose,
- // which is to tag a NamedDisplay uncloseable after creation.
- private static Object globalLock = new Object();
- private static LongObjectHashMap globalNamedDisplayMap = new LongObjectHashMap();
- private static List openDisplayList = new ArrayList();
- private static List pendingDisplayList = new ArrayList();
-
- public static class NamedDisplay {
- String name;
- long handle;
- int refCount;
- boolean unCloseable;
- Throwable creationStack;
-
- protected NamedDisplay(String name, long handle) {
- this.name=name;
- this.handle=handle;
- this.refCount=1;
- this.unCloseable=false;
- if(DEBUG) {
- this.creationStack=new Throwable("NamedDisplay Created at:");
- } else {
- this.creationStack=null;
- }
- }
-
- public final String getName() { return name; }
- public final long getHandle() { return handle; }
- public final int getRefCount() { return refCount; }
-
- public final void setUncloseable(boolean v) { unCloseable = v; }
- public final boolean isUncloseable() { return unCloseable; }
-
- public final Throwable getCreationStack() { return creationStack; }
-
- public Object clone() throws CloneNotSupportedException {
- return super.clone();
- }
-
- public String toString() {
- return "NamedX11Display["+name+", 0x"+Long.toHexString(handle)+", refCount "+refCount+", unCloseable "+unCloseable+"]";
- }
- }
-
- /** Returns the number of unclosed X11 Displays.
- * @param realXCloseAndPendingDisplays if true, {@link #closePendingDisplayConnections()} is called.
- */
- public static int shutdown(boolean realXCloseOpenAndPendingDisplays, boolean verbose) {
- int num=0;
- if(DEBUG||verbose||pendingDisplayList.size() > 0) {
- String msg = "X11Util.Display: Shutdown (close open / pending Displays: "+realXCloseOpenAndPendingDisplays+
- ", open (no close attempt): "+globalNamedDisplayMap.size()+"/"+openDisplayList.size()+
- ", open (no close attempt and uncloseable): "+pendingDisplayList.size()+")" ;
- if(DEBUG) {
- Exception e = new Exception(msg);
- e.printStackTrace();
- } else {
- System.err.println(msg);
- }
- if( openDisplayList.size() > 0) {
- X11Util.dumpOpenDisplayConnections();
- }
- if( pendingDisplayList.size() > 0 ) {
- X11Util.dumpPendingDisplayConnections();
- }
- }
-
- synchronized(globalLock) {
- if(realXCloseOpenAndPendingDisplays) {
- closePendingDisplayConnections();
- }
- openDisplayList.clear();
- pendingDisplayList.clear();
- globalNamedDisplayMap.clear();
- }
- return num;
- }
-
- /**
- * Closing pending Display connections in reverse order.
- *
- * @return number of closed Display connections
- */
- public static int closePendingDisplayConnections() {
- int num=0;
- synchronized(globalLock) {
- if(DEBUG) {
- System.err.println("X11Util: Closing Pending X11 Display Connections: "+pendingDisplayList.size());
- }
- for(int i=pendingDisplayList.size()-1; i>=0; i--) {
- NamedDisplay ndpy = (NamedDisplay) pendingDisplayList.get(i);
- if(DEBUG) {
- System.err.println("X11Util.closePendingDisplayConnections(): Closing ["+i+"]: "+ndpy);
- }
- XCloseDisplay(ndpy.getHandle());
- num++;
- }
- }
- return num;
- }
-
- public static int getOpenDisplayConnectionNumber() {
- synchronized(globalLock) {
- return openDisplayList.size();
- }
- }
-
- public static void dumpOpenDisplayConnections() {
- synchronized(globalLock) {
- System.err.println("X11Util: Open X11 Display Connections: "+openDisplayList.size());
- for(int i=0; i<pendingDisplayList.size(); i++) {
- NamedDisplay ndpy = (NamedDisplay) openDisplayList.get(i);
- System.err.println("X11Util: ["+i+"]: "+ndpy);
- if(null!=ndpy) {
- Throwable t = ndpy.getCreationStack();
- if(null!=t) {
- t.printStackTrace();
- }
- }
- }
- }
- }
-
- public static int getPendingDisplayConnectionNumber() {
- synchronized(globalLock) {
- return pendingDisplayList.size();
- }
- }
-
- public static void dumpPendingDisplayConnections() {
- synchronized(globalLock) {
- System.err.println("X11Util: Pending X11 Display Connections: "+pendingDisplayList.size());
- for(int i=0; i<pendingDisplayList.size(); i++) {
- NamedDisplay ndpy = (NamedDisplay) pendingDisplayList.get(i);
- System.err.println("X11Util: ["+i+"]: "+ndpy);
- if(null!=ndpy) {
- Throwable t = ndpy.getCreationStack();
- if(null!=t) {
- t.printStackTrace();
- }
- }
- }
- }
- }
-
- public static boolean markDisplayUncloseable(long handle) {
- NamedDisplay ndpy;
- synchronized(globalLock) {
- ndpy = (NamedDisplay) globalNamedDisplayMap.get(handle);
- }
- if( null != ndpy ) {
- ndpy.setUncloseable(true);
- return true;
- }
- return false;
- }
-
- /** Returns this created named display. */
- public static long createDisplay(String name) {
- name = validateDisplayName(name);
- long dpy = XOpenDisplay(name);
- if(0==dpy) {
- throw new NativeWindowException("X11Util.Display: Unable to create a display("+name+") connection. Thread "+Thread.currentThread().getName());
- }
- // if you like to debug and synchronize X11 commands ..
- // setSynchronizeDisplay(dpy, true);
- NamedDisplay namedDpy = new NamedDisplay(name, dpy);
- synchronized(globalLock) {
- globalNamedDisplayMap.put(dpy, namedDpy);
- openDisplayList.add(namedDpy);
- pendingDisplayList.add(namedDpy);
- }
- if(DEBUG) {
- Exception e = new Exception("X11Util.Display: Created new "+namedDpy+". Thread "+Thread.currentThread().getName());
- e.printStackTrace();
- }
- return namedDpy.getHandle();
- }
-
- public static void closeDisplay(long handle) {
- NamedDisplay namedDpy;
-
- synchronized(globalLock) {
- namedDpy = (NamedDisplay) globalNamedDisplayMap.remove(handle);
- if(namedDpy!=null) {
- if(!openDisplayList.remove(namedDpy)) { throw new RuntimeException("Internal: "+namedDpy); }
- }
- }
- if(null==namedDpy) {
- X11Util.dumpPendingDisplayConnections();
- throw new RuntimeException("X11Util.Display: Display(0x"+Long.toHexString(handle)+") with given handle is not mapped. Thread "+Thread.currentThread().getName());
- }
- if(namedDpy.getHandle()!=handle) {
- X11Util.dumpPendingDisplayConnections();
- throw new RuntimeException("X11Util.Display: Display(0x"+Long.toHexString(handle)+") Mapping error: "+namedDpy+". Thread "+Thread.currentThread().getName());
- }
-
- if(DEBUG) {
- Exception e = new Exception("X11Util.Display: Closing new "+namedDpy+". Thread "+Thread.currentThread().getName());
- e.printStackTrace();
- }
-
- if(!namedDpy.isUncloseable()) {
- synchronized(globalLock) {
- if(!pendingDisplayList.remove(namedDpy)) { throw new RuntimeException("Internal: "+namedDpy); }
- }
- XCloseDisplay(namedDpy.getHandle());
- }
- }
-
- public static NamedDisplay getNamedDisplay(long handle) {
- synchronized(globalLock) {
- return (NamedDisplay) globalNamedDisplayMap.get(handle);
- }
- }
-
- /**
- * @return If name is null, it returns the previous queried NULL display name,
- * otherwise the name. */
- public static String validateDisplayName(String name) {
- return ( null == name ) ? getNullDisplayName() : name ;
- }
-
- public static String validateDisplayName(String name, long handle) {
- if(null==name && 0!=handle) {
- name = XDisplayString(handle);
- }
- return validateDisplayName(name);
- }
-
- /*******************************
- **
- ** Locked X11Lib wrapped functions
- **
- *******************************/
-
- public static long XOpenDisplay(String arg0) {
- NativeWindowFactory.getDefaultToolkitLock().lock();
- try {
- long handle = X11Lib.XOpenDisplay(arg0);
- if(TRACE_DISPLAY_LIFECYCLE) {
- Throwable t = new Throwable(Thread.currentThread()+" - X11Util.XOpenDisplay("+arg0+") 0x"+Long.toHexString(handle));
- t.printStackTrace();
- }
- return handle;
- } finally {
- NativeWindowFactory.getDefaultToolkitLock().unlock();
- }
- }
-
- public static int XCloseDisplay(long display) {
- NativeWindowFactory.getDefaultToolkitLock().lock();
- try {
- if(TRACE_DISPLAY_LIFECYCLE) {
- Throwable t = new Throwable(Thread.currentThread()+" - X11Util.XCloseDisplay() 0x"+Long.toHexString(display));
- t.printStackTrace();
- }
- return X11Lib.XCloseDisplay(display);
- } finally {
- NativeWindowFactory.getDefaultToolkitLock().unlock();
- }
- }
-
- public static int XFree(Buffer arg0) {
- NativeWindowFactory.getDefaultToolkitLock().lock();
- try {
- return X11Lib.XFree(arg0);
- } finally {
- NativeWindowFactory.getDefaultToolkitLock().unlock();
- }
- }
-
- public static int XSync(long display, boolean discard) {
- lockDefaultToolkit(display);
- try {
- return X11Lib.XSync(display, discard);
- } finally {
- unlockDefaultToolkit(display);
- }
- }
-
- public static void XSynchronize(long display, boolean onoff) {
- lockDefaultToolkit(display);
- try {
- X11Lib.XSynchronize(display, onoff);
- } finally {
- unlockDefaultToolkit(display);
- }
- }
-
- public static boolean XineramaEnabled(long display) {
- lockDefaultToolkit(display);
- try {
- return X11Lib.XineramaEnabled(display);
- } finally {
- unlockDefaultToolkit(display);
- }
- }
-
- public static int DefaultScreen(long display) {
- lockDefaultToolkit(display);
- try {
- return X11Lib.DefaultScreen(display);
- } finally {
- unlockDefaultToolkit(display);
- }
- }
-
- public static long RootWindow(long display, int screen_number) {
- lockDefaultToolkit(display);
- try {
- return X11Lib.RootWindow(display, screen_number);
- } finally {
- unlockDefaultToolkit(display);
- }
- }
-
- public static long XCreatePixmap(long display, long arg1, int arg2, int arg3, int arg4) {
- lockDefaultToolkit(display);
- try {
- return X11Lib.XCreatePixmap(display, arg1, arg2, arg3, arg4);
- } finally {
- unlockDefaultToolkit(display);
- }
- }
-
- public static String XDisplayString(long display) {
- lockDefaultToolkit(display);
- try {
- return X11Lib.XDisplayString(display);
- } finally {
- unlockDefaultToolkit(display);
- }
- }
-
- public static int XFlush(long display) {
- lockDefaultToolkit(display);
- try {
- return X11Lib.XFlush(display);
- } finally {
- unlockDefaultToolkit(display);
- }
- }
-
- public static int XFreePixmap(long display, long arg1) {
- lockDefaultToolkit(display);
- try {
- return X11Lib.XFreePixmap(display, arg1);
- } finally {
- unlockDefaultToolkit(display);
- }
- }
-
- public static long DefaultVisualID(long display, int screen) {
- lockDefaultToolkit(display);
- try {
- return X11Lib.DefaultVisualID(display, screen);
- } finally {
- unlockDefaultToolkit(display);
- }
- }
-
- public static long CreateDummyWindow(long display, int screen_index, long visualID, int width, int height) {
- lockDefaultToolkit(display);
- try {
- return X11Lib.CreateDummyWindow(display, screen_index, visualID, width, height);
- } finally {
- unlockDefaultToolkit(display);
- }
- }
-
- public static void DestroyDummyWindow(long display, long window) {
- lockDefaultToolkit(display);
- try {
- X11Lib.DestroyDummyWindow(display, window);
- } finally {
- unlockDefaultToolkit(display);
- }
- }
-
- public static Point GetRelativeLocation(long display, int screen_index, long src_win, long dest_win, int src_x, int src_y) {
- lockDefaultToolkit(display);
- try {
- return X11Lib.GetRelativeLocation(display, screen_index, src_win, dest_win, src_x, src_y);
- } finally {
- unlockDefaultToolkit(display);
- }
- }
-
- public static XVisualInfo[] XGetVisualInfo(long display, long arg1, XVisualInfo arg2, int[] arg3, int arg3_offset) {
- lockDefaultToolkit(display);
- try {
- return X11Lib.XGetVisualInfo(display, arg1, arg2, arg3, arg3_offset);
- } finally {
- unlockDefaultToolkit(display);
- }
- }
-
- public static boolean XF86VidModeGetGammaRamp(long display, int screen, int size, ShortBuffer red_array, ShortBuffer green_array, ShortBuffer blue_array) {
- lockDefaultToolkit(display);
- try {
- return X11Lib.XF86VidModeGetGammaRamp(display, screen, size, red_array, green_array, blue_array);
- } finally {
- unlockDefaultToolkit(display);
- }
- }
-
- public static boolean XF86VidModeGetGammaRamp(long display, int screen, int size, short[] red_array, int red_array_offset, short[] green_array, int green_array_offset, short[] blue_array, int blue_array_offset) {
- lockDefaultToolkit(display);
- try {
- return X11Lib.XF86VidModeGetGammaRamp(display, screen, size, red_array, red_array_offset, green_array, green_array_offset, blue_array, blue_array_offset);
- } finally {
- unlockDefaultToolkit(display);
- }
- }
-
- public static boolean XF86VidModeGetGammaRampSize(long display, int screen, IntBuffer size) {
- lockDefaultToolkit(display);
- try {
- return X11Lib.XF86VidModeGetGammaRampSize(display, screen, size);
- } finally {
- unlockDefaultToolkit(display);
- }
- }
-
- public static boolean XF86VidModeGetGammaRampSize(long display, int screen, int[] size, int size_offset) {
- lockDefaultToolkit(display);
- try {
- return X11Lib.XF86VidModeGetGammaRampSize(display, screen, size, size_offset);
- } finally {
- unlockDefaultToolkit(display);
- }
- }
-
- public static boolean XF86VidModeSetGammaRamp(long display, int screen, int size, ShortBuffer red_array, ShortBuffer green_array, ShortBuffer blue_array) {
- lockDefaultToolkit(display);
- try {
- return X11Lib.XF86VidModeSetGammaRamp(display, screen, size, red_array, green_array, blue_array);
- } finally {
- unlockDefaultToolkit(display);
- }
- }
-
- public static boolean XF86VidModeSetGammaRamp(long display, int screen, int size, short[] red_array, int red_array_offset, short[] green_array, int green_array_offset, short[] blue_array, int blue_array_offset) {
- lockDefaultToolkit(display);
- try {
- return X11Lib.XF86VidModeSetGammaRamp(display, screen, size, red_array, red_array_offset, green_array, green_array_offset, blue_array, blue_array_offset);
- } finally {
- unlockDefaultToolkit(display);
- }
- }
-
- public static void XLockDisplay(long handle) {
- if(ToolkitLock.TRACE_LOCK) {
- System.out.println("+++ X11 Display Lock get 0x"+Long.toHexString(handle));
- }
- X11Lib.XLockDisplay(handle);
- }
-
- public static void XUnlockDisplay(long handle) {
- if(ToolkitLock.TRACE_LOCK) {
- System.out.println("--- X11 Display Lock rel 0x"+Long.toHexString(handle));
- }
- X11Lib.XUnlockDisplay(handle);
- }
-
- private static native void initialize0(boolean firstUIActionOnProcess);
- private static native void setX11ErrorHandler0(boolean onoff, boolean quiet);
-}