aboutsummaryrefslogtreecommitdiffstats
path: root/gl4java
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2001-02-13 05:32:07 +0000
committerSven Gothel <[email protected]>2001-02-13 05:32:07 +0000
commit3e2b16a820bfe03f8f3837c3aaa615c8c4b7f18c (patch)
treed834a05eb37751b4c95045c3021589f2e22fcd9f /gl4java
parent91bc9d109b2d16e6d42f1fbcc9d3dbca51c40b69 (diff)
JAWT Support JDK >=1.3
Diffstat (limited to 'gl4java')
-rw-r--r--gl4java/GL4JavaReflections.java1
-rw-r--r--gl4java/GLContext.java.skel559
-rw-r--r--gl4java/GLEnum.java4
-rw-r--r--gl4java/GLFunc.java8
-rw-r--r--gl4java/GLFuncJauJNI.java4
-rw-r--r--gl4java/GLFuncJauJNInf.java4
-rw-r--r--gl4java/GLUEnum.java4
-rw-r--r--gl4java/GLUFunc.java133
-rw-r--r--gl4java/GLUFuncJauJNI.java133
-rw-r--r--gl4java/GLUFuncJauJNInf.java133
-rw-r--r--gl4java/applet/SimpleGLAnimApplet1.java46
-rw-r--r--gl4java/awt/GLAnimCanvas.java229
-rw-r--r--gl4java/awt/GLCanvas.java110
-rw-r--r--gl4java/jau/awt/WinHandleAccess.java4
-rw-r--r--gl4java/jau/awt/macintosh/MacHandleAccess.java8
-rw-r--r--gl4java/jau/awt/motif/X11HandleAccess.java7
-rw-r--r--gl4java/jau/awt/windows/MSWin32HandleAccess.java7
-rw-r--r--gl4java/jau/awt/windows/Win32HandleAccess.java7
-rw-r--r--gl4java/swing/GLAnimJPanel.java155
-rw-r--r--gl4java/swing/GLJPanel.java95
-rw-r--r--gl4java/system/GljMSJDirect.java12
-rw-r--r--gl4java/utils/Test.java2
-rw-r--r--gl4java/utils/glut/GLUTFuncLightImpl.java2
23 files changed, 974 insertions, 693 deletions
diff --git a/gl4java/GL4JavaReflections.java b/gl4java/GL4JavaReflections.java
index 79969bf..7ae4d28 100644
--- a/gl4java/GL4JavaReflections.java
+++ b/gl4java/GL4JavaReflections.java
@@ -12,7 +12,6 @@ import java.lang.reflect.*;
/**
* The function-declaration holder !
*
- * @see CFuncVariable
* @version 1.00, 12. Novemeber 1999
* @author Sven Goethel
*
diff --git a/gl4java/GLContext.java.skel b/gl4java/GLContext.java.skel
index c91e4f6..449a3b3 100644
--- a/gl4java/GLContext.java.skel
+++ b/gl4java/GLContext.java.skel
@@ -62,27 +62,27 @@ import java.lang.reflect.*;
* The native libraries are plattform depended.
*
* <pre>
- The default native library for Win32 and Unice's is :
- <p>
- GLContext: GL4JavaJauGljJNI
- GLFuncJauJNI: GL4JavaJauGLJNI
- GLUFuncJauJNI: GL4JavaJauGLUJNI
- <p>
- Note:
- <p>
- The default native library for Macintosh is :
- <p>
- GLContext: GL4JavaMacGZGljJNI
- GLFuncJauJNI: GL4JavaMacGZGLJNI
- GLUFuncJauJNI: GL4JavaMacGZGLUJNI
+ The default native library's are:
<p>
+ GLContext: GL4JavaJauGljJNI (jdk ==1.1),
+ GL4JavaJauGljJNI12 (jdk ==1.2),
+ GL4JavaJauGljJNI13 (jdk >=1.3)
+
+ GLFuncJauJNI: GL4JavaJauGLJNI (jdk ==1.1),
+ GL4JavaJauGLJNI12 (jdk >=1.2)
+
+ GLUFuncJauJNI: GL4JavaJauGLUJNI (jdk ==1.1),
+ GL4JavaJauGLUJNI12 (jdk >=1.2)
<p>
To check wich version and vendors are currently used,
just call while a GLContext is created :
<p>
<a href="GLContext.html#gljShowVersions()">gljShowVersions</a>
<p>
- Where an own Frame is opened !
+ Or just run at the command line:
+ <p>
+ java gl4java.GLContext -info
+ <p>
* </pre>
*
* Make sure that this library is installed in your library path.
@@ -132,17 +132,17 @@ import java.lang.reflect.*;
<a href="GLContext.html#loadNativeLibraries(java.lang.String, java.lang.String, java.lang.String)">loadNativeLibraries</a>
<a href="GLContext.html#createGLFunc(java.lang.String)">createGLFunc</a>
<a href="GLContext.html#createGLUFunc(java.lang.String)">createGLUFunc</a>
+ <a href="GLContext.html#gljIsInit()">gljIsInit</a>
+ <a href="GLContext.html#gljMakeCurrent()">gljMakeCurrent</a>
+ <a href="GLContext.html#gljSwap()">gljSwap</a>
+ <a href="GLContext.html#gljFree()">gljFree</a>
+ <a href="GLContext.html#gljDestroy()">gljDestroy</a>
<a href="GLContext.html#gljGetNativeLibVersion()">gljGetNativeLibVersion</a>
<a href="GLContext.html#gljGetClassVersion()">gljGetClassVersion</a>
<a href="GLContext.html#gljShowVersions()">gljShowVersions</a>
<a href="GLContext.html#gljCheckGL()">gljCheckGL</a>
<a href="GLContext.html#gljCheckGLTypes()">gljCheckGLTypes</a>
<a href="GLContext.html#gljResize(int, int)">gljResize</a>
- <a href="GLContext.html#gljSwap()">gljSwap</a>
- <a href="GLContext.html#gljIsInit()">gljIsInit</a>
- <a href="GLContext.html#gljMakeCurrent(boolean)">gljMakeCurrent</a>
- <a href="GLContext.html#gljDestroy()">gljDestroy</a>
- <a href="GLContext.html#gljFree()">gljFree</a>
* </pre>
* <p>
@@ -163,7 +163,6 @@ import java.lang.reflect.*;
* </pre>
* <p>
*
- * @see WinDataAccess
* @version 2.00, 21. April 1999
* @author Sven Goethel
*
@@ -171,7 +170,6 @@ import java.lang.reflect.*;
public class GLContext extends Object
implements Runnable
{
-
protected boolean isInitialized = false;
/**
@@ -180,8 +178,7 @@ public class GLContext extends Object
* If we failed loading the lib.,
* gljMakeCurrent and gljIsInit will return false.
*
- * @see GLContext#gljMakeCurrent
- * @see GLContext#gljIsInit
+ * @see gl4java.GLContext#gljIsInit
*/
protected static boolean libsLoaded = false;
@@ -234,45 +231,47 @@ public class GLContext extends Object
* Usually for debugging.
*/
public static boolean gljClassDebug = false;
+ public static boolean gljThreadDebug = false;
public static boolean gljNativeDebug = false;
/**
* We will store the GL Context right here.
*
- * @see GLContext#createGLContext
- * @see GLContext#gljInit
+ * @see gl4java.GLContext#createGLContext
+ * @see gl4java.GLContext#gljInit
*/
- protected int glContext=0;
+ protected long glContext=0;
+ protected static int glContextNumber=0;
/**
* The context with witch display lists and textures will be shared.
*
- * @see GLContext#createGLContext
- * @see GLContext#gljInit
+ * @see gl4java.GLContext#createGLContext
+ * @see gl4java.GLContext#gljInit
*/
protected GLContext sharedGLContext;
- protected int sharedGLContextNative= 0; // No sharing by default.
+ protected long sharedGLContextNative= 0; // No sharing by default.
/**
* Xwindow data AND Windows data for the widget
*
- * @see GLContext#createGLContext
- * @see GLContext#gljInit
+ * @see gl4java.GLContext#createGLContext
+ * @see gl4java.GLContext#gljInit
*/
- protected int pixmapHandle=0; // unique handle for the Pixmap
- protected int windowHandle=0; // unique handle for this widget's window
- protected int displayHandle=0; // unqiue handle to the display
+ protected long pixmapHandle=0; // unique handle for the Pixmap
+ protected long windowHandle=0; // unique handle for this widget's window
+ protected long displayHandle=0; // unqiue handle to the display
+ private int createwinw;
+ private int createwinh;
/**
* MS-JDirect-Window data for the MS-JVM interface
*
- * @see GLContext#createGLContext
- * @see GLContext#gljInit
+ * @see gl4java.GLContext#createGLContext
+ * @see gl4java.GLContext#gljInit
*/
private int createwinx;
private int createwiny;
- private int createwinw;
- private int createwinh;
private boolean threadRunning = false;
private boolean destroyWindow = false;
protected Container containerWindow = null;
@@ -286,24 +285,24 @@ public class GLContext extends Object
*
* Must be set via createOffScreenCtx
*
- * @see GLJPanel#paint
- * @see GLJPanel#createOffScreenCtx
+ * @see gl4java.swing.GLJPanel#paint
+ * @see gl4java.GLContext#createOffScreenCtx
*/
protected Dimension offScrnSize = null;
/**
* Windows data AND flag is Window-Handel is read (for X11 also) !
*
- * @see GLContext#createGLContext
- * @see GLContext#gljInit
+ * @see gl4java.GLContext#createGLContext
+ * @see gl4java.GLContext#gljInit
*/
- int pData = 0; // stores the pointer structure that holds windows info
+ long pData = 0; // stores the pointer structure that holds windows info
/**
* Flag to check, if the OpenGL-Context is active !
*
- * @see GLCanvas#gljIsEnabled
- * @see GLCanvas#gljSetEnabled
+ * @see gl4java.GLContext#isEnabled
+ * @see gl4java.GLContext#setEnabled
*/
protected boolean glEnabled = true;
@@ -315,7 +314,7 @@ public class GLContext extends Object
*
* This is set via the constructor !
*
- * @see GLContext#GLContext
+ * @see gl4java.GLContext#GLContext
*/
protected boolean offScreenRenderer = false;
@@ -325,15 +324,15 @@ public class GLContext extends Object
*
* This is set via the constructor !
*
- * @see GLContext#isDoubleBuffer
- * @see GLContext#GLContext
+ * @see gl4java.GLContext#isDoubleBuffer
+ * @see gl4java.GLContext#GLContext
*/
protected boolean doubleBuffer = true;
/**
* Visual pre-set for stencil-bit number, default: 0
*
- * @see GLContext#GLContext
+ * @see gl4java.GLContext#GLContext
*/
protected int stencilBits = 0;
@@ -347,7 +346,7 @@ public class GLContext extends Object
* The output value, after the constructor returns,
* it is the summary of all accumulation bits of all components !
*
- * @see GLContext#GLContext
+ * @see gl4java.GLContext#GLContext
*/
protected int accumSize = 0;
@@ -357,8 +356,8 @@ public class GLContext extends Object
*
* This is set via the constructor !
*
- * @see GLContext#isStereoView
- * @see GLContext#GLContext
+ * @see gl4java.GLContext#isStereoView
+ * @see gl4java.GLContext#GLContext
*/
protected boolean stereoView = false;
@@ -368,8 +367,8 @@ public class GLContext extends Object
*
* This is set via the constructor !
*
- * @see GLContext#isRGBA
- * @see GLContext#GLContext
+ * @see gl4java.GLContext#isRGBA
+ * @see gl4java.GLContext#GLContext
*/
protected boolean rgba = true;
@@ -383,8 +382,8 @@ public class GLContext extends Object
*
* This is set via the constructor !
*
- * @see GLContext#isOwnWindowCreated
- * @see GLContext#GLContext
+ * @see gl4java.GLContext#isOwnWindowCreated
+ * @see gl4java.GLContext#GLContext
*/
protected boolean createOwnWindow = false;
@@ -430,6 +429,7 @@ public class GLContext extends Object
private static boolean isNetscapeJvm = false;
private static boolean isMicrosoftJvm = false;
+ private static boolean isIBMJvm = false;
private static boolean useMSJDirect = false;
private static String jvmVendor = null;
private static String jvmVersion = null;
@@ -437,35 +437,43 @@ public class GLContext extends Object
private static int jvmVersionMinor = 1; // min. defaults
private static String osName = null;
+ private static String jniEXTsuff_gl_glu = "";
+ private static String jniEXTsuff_glj = "";
+
/**
* Get the native GL Context !
*
- * @see GLContext#glContext
+ * @see gl4java.GLContext#glContext
*/
- public final long getNativeGLContext() { return (long)glContext; }
+ public final long getNativeGLContext() { return glContext; }
+
+ public static final int getNativeGLContextNumber()
+ { return glContextNumber; }
/**
* Get the native Window Handle !
*
- * @see GLContext#windowHandle
+ * @see gl4java.GLContext#windowHandle
+ *
+ * @deprecated The native window handle is no more accessible
+ * through this method since JDK >= 1.3 !
*/
- public final long getNativeWindoHandle() { return (long)windowHandle; }
+ public final long getNativeWindoHandle() { return windowHandle; }
/**
* Get the optional shared GL Context !
*
- * @see GLContext#sharedGLContext
+ * @see gl4java.GLContext#sharedGLContext
*/
public final GLContext getSharedGLContext() { return sharedGLContext; }
/**
* Get the native OS-Type !
*
- * @see GLContext#osType
- * @see GLContext#OsWindoof
- * @see GLContext#OsUnknown
- * @see GLContext#OsX11
- * @see GLContext#OsMac
+ * @see gl4java.GLContext#OsWindoof
+ * @see gl4java.GLContext#OsUnknown
+ * @see gl4java.GLContext#OsX11
+ * @see gl4java.GLContext#OsMac
*/
public final int getNativeOSType() { return osType; }
@@ -474,8 +482,8 @@ public class GLContext extends Object
*
* After a GLContext is created, this property can be queried !
*
- * @see GLContext#doubleBuffer
- * @see GLContext#GLContext
+ * @see gl4java.GLContext#doubleBuffer
+ * @see gl4java.GLContext#GLContext
*/
public final boolean isDoubleBuffer() { return doubleBuffer; }
@@ -484,8 +492,8 @@ public class GLContext extends Object
*
* After a GLContext is created, this property can be queried !
*
- * @see GLContext#stereoView
- * @see GLContext#GLContext
+ * @see gl4java.GLContext#stereoView
+ * @see gl4java.GLContext#GLContext
*/
public final int getStencilBitNumber() { return stencilBits; }
@@ -494,7 +502,7 @@ public class GLContext extends Object
*
* After a GLContext is created, this property can be queried !
*
- * @see GLContext#GLContext
+ * @see gl4java.GLContext#GLContext
*/
public final int getAccumSize() { return accumSize; }
@@ -503,8 +511,8 @@ public class GLContext extends Object
*
* After a GLContext is created, this property can be queried !
*
- * @see GLContext#stereoView
- * @see GLContext#GLContext
+ * @see gl4java.GLContext#stereoView
+ * @see gl4java.GLContext#GLContext
*/
public final boolean isStereoView() { return stereoView; }
@@ -513,8 +521,8 @@ public class GLContext extends Object
*
* After a GLContext is created, this property can be queried !
*
- * @see GLContext#rgba
- * @see GLContext#GLContext
+ * @see gl4java.GLContext#rgba
+ * @see gl4java.GLContext#GLContext
*/
public final boolean isRGBA() { return rgba; }
@@ -523,8 +531,8 @@ public class GLContext extends Object
*
* After a GLContext is created, this property can be queried !
*
- * @see GLContext#createOwnWindow
- * @see GLContext#GLContext
+ * @see gl4java.GLContext#createOwnWindow
+ * @see gl4java.GLContext#GLContext
*/
public final boolean isOwnWindowCreated() { return createOwnWindow; }
@@ -537,6 +545,17 @@ public class GLContext extends Object
* Java level, or "libGL4JavaJauGljJNI.so" at the solaris level,
* or "GL4JavaJauGljJNI.dll" at the win32 level :-).
*
+ * <p>
+ *
+ * The user must call loadNativeLibrary !
+ * E.g. he can add the default loader like this:
+ * <pre>
+ static {
+ if(GLContext.loadNativeLibraries(null, null, null)==false)
+ System.out.println("could not load def. native libs.");
+ }
+ * </pre>
+ *
* @param gljLibName The name of the GLContex native library.
* If gljLibName==null, the default library will be used !
*
@@ -548,11 +567,11 @@ public class GLContext extends Object
*
* @return boolean, true if succesfull !
*
- * @see GLContext#defGljLib
+ * @see gl4java.GLContext#defGljLib
*
- * @see GLContext#defGLFuncLib
+ * @see gl4java.GLContext#defGLFuncLib
*
- * @see GLContext#defGLUFuncLib
+ * @see gl4java.GLContext#defGLUFuncLib
*/
public static boolean loadNativeLibraries ( String gljLibName,
String glLibName,
@@ -606,6 +625,7 @@ public class GLContext extends Object
isNetscapeJvm = jvmVendor!=null && jvmVendor.indexOf("Netscape")>=0 ;
isMicrosoftJvm = jvmVendor!=null && jvmVendor.indexOf("Microsoft")>=0 ;
+ isIBMJvm = jvmVendor!=null && jvmVendor.indexOf("IBM")>=0 ;
// Determine the OS
osName = System.getProperty( "os.name" );
@@ -616,21 +636,46 @@ public class GLContext extends Object
else /* oops - lets guess unix/x11 :-) */
osType = OsX11;
- String jniEXTsuff = "";
-
if( jvmVersionMajor>=2 ||
- ( jvmVersionMajor==1 && jvmVersionMinor>=2 )
+ ( jvmVersionMajor==1 && jvmVersionMinor>=4 )
)
{
- jniEXTsuff = "12";
+ jniEXTsuff_gl_glu = "12";
+ jniEXTsuff_glj = "13";
+ }
+
+ else
+
+ if( jvmVersionMajor==1 && jvmVersionMinor>=3
+ && !isIBMJvm && !isMicrosoftJvm
+ )
+ {
+ jniEXTsuff_gl_glu = "12";
+ jniEXTsuff_glj = "13";
+ }
+
+ else
+
+ if( jvmVersionMajor==1 && jvmVersionMinor>=2 )
+ {
+ jniEXTsuff_gl_glu = "12";
+ jniEXTsuff_glj = "12";
+ }
+
+ else
+
+ {
+ jniEXTsuff_gl_glu = "";
+ jniEXTsuff_glj = "";
}
+
if(gljLibName==null)
- gljLibName = defGljLib+jniEXTsuff;
+ gljLibName = defGljLib+jniEXTsuff_glj;
if(glLibName==null)
- glLibName = defGLFuncLib+jniEXTsuff;
+ glLibName = defGLFuncLib+jniEXTsuff_gl_glu;
if(gluLibName==null)
- gluLibName = defGLUFuncLib+jniEXTsuff;
+ gluLibName = defGLUFuncLib+jniEXTsuff_gl_glu;
if ( (osType==OsWindoof) && (isMicrosoftJvm) )
{
@@ -717,19 +762,6 @@ public class GLContext extends Object
return libsLoaded;
}
- /**
- * no no no .. the user has to choose !
- *
- * The user must call loadNativeLibrary !
- *
- * @see GLContext#loadNativeLibrary
- *
- * static {
- * if(!libLoaded)
- * loadNativeLibrares(null, null, null);
- * }
- */
-
/**
* Test to load the native library, GLFunc and GLUFunc implementation !
* If succesfull, a Frame will created and the GL-Infos (vendor, ...)
@@ -826,10 +858,16 @@ public class GLContext extends Object
Frame f = new Frame("GL4Java Info");
f.setSize(10, 10);
- f.pack();
+ Canvas cvs = new Canvas();
+ cvs.setVisible(true);
+ cvs.setSize(50,50);
+ f.add("Center", cvs);
+ f.setSize(60,60);
+
+ // f.pack();
f.setVisible(true);
- GLContext glj = new GLContext(f, gl, glu);
+ GLContext glj = new GLContext(cvs, gl, glu);
Frame fInfo = glj.gljShowVersions();
@@ -1382,7 +1420,7 @@ public class GLContext extends Object
* @return GLFunc, the implementation's instance if exists
* and valid, or null
*
- * @see GLContext#defGLFuncClass
+ * @see gl4java.GLContext#defGLFuncClass
*/
public static final GLFunc createGLFunc(String vendorClass)
{
@@ -1427,7 +1465,7 @@ public class GLContext extends Object
* @return GLUFunc, the implementation's instance if exists
* and valid, or null
*
- * @see GLContext#defGLUFuncClass
+ * @see gl4java.GLContext#defGLUFuncClass
*/
public static final GLUFunc createGLUFunc(String vendorClass)
{
@@ -1505,7 +1543,7 @@ public class GLContext extends Object
*
* @return void
*
- * @see GLContext#GLContext
+ * @see gl4java.GLContext#GLContext
*/
public final void createGLContext(Graphics g)
{
@@ -1524,7 +1562,9 @@ public class GLContext extends Object
System.out.println("using MSJDirect ...");
win_access = (WinHandleAccess)
- Class.forName(access_name + "windows.MSWin32HandleAccess").newInstance();
+ Class.forName(
+ access_name+"windows.MSWin32HandleAccess"
+ ).newInstance();
/* _comp should be a subclass of Canvas, and its parent
class should be of type Panel, Frame or Window. If not,
this all falls apart. */
@@ -1549,7 +1589,7 @@ public class GLContext extends Object
if(g==null)
System.out.println("GL4Java-MSJVM: got empty Graphics");
- pData = (int)win_access.getWinHandle(ob,g);
+ pData = win_access.getWinHandle(ob,g);
if (pData != 0)
{
@@ -1588,25 +1628,31 @@ public class GLContext extends Object
{ }
}
}
- } else if(osType==OsWindoof)
+ } else if(osType==OsWindoof && !useJAWT())
{
win_access = (WinHandleAccess)
- Class.forName(access_name + "windows.Win32HandleAccess").newInstance();
- pData = (int) win_access.getWinHandle(_compHeavy, g);
+ Class.forName(
+ access_name+"windows.Win32HandleAccess"
+ ).newInstance();
+ pData = win_access.getWinHandle(_compHeavy, g);
windowHandle = pData;
}
- else if(osType==OsMac)
+ else if(osType==OsMac && !useJAWT())
{
win_access = (WinHandleAccess)
- Class.forName(access_name + "macintosh.MacHandleAccess").newInstance();
- pData = (int) win_access.getWinHandle(_compHeavy, g);
+ Class.forName(
+ access_name+"macintosh.MacHandleAccess"
+ ).newInstance();
+ pData = win_access.getWinHandle(_compHeavy, g);
windowHandle = pData;
}
- else /* X11 */
+ else if(!useJAWT())
{
win_access = (WinHandleAccess)
- Class.forName(access_name + "motif.X11HandleAccess").newInstance();
- pData = (int) win_access.getWinHandle(_compHeavy, g);
+ Class.forName(
+ access_name+"motif.X11HandleAccess"
+ ).newInstance();
+ pData = win_access.getWinHandle(_compHeavy, g);
windowHandle = pData;
}
}
@@ -1652,7 +1698,7 @@ public class GLContext extends Object
* @exception GL4Java.GL4JavaInitException
* this class throws an exception
* if the native call to create a OpenGL context failed.
- * @see GLContext#createGLContext
+ * @see gl4java.GLContext#createGLContext
* @see gl4java.awt.GLCanvas#paint
* @see gl4java.awt.GLCanvas#init
*/
@@ -1661,7 +1707,7 @@ public class GLContext extends Object
{
if( libsLoaded==false ) return ;
- if(pData==0 && !offScreenRenderer)
+ if(pData==0 && !offScreenRenderer && !useJAWT())
{
System.out.println("could not open a GL widget -- Win CONTEXT");
throw new GL4JavaInitException ();
@@ -1670,7 +1716,11 @@ public class GLContext extends Object
if(gljClassDebug)
System.out.println(">>> gljInit");
- if( openOpenGLNative() == false )
+ boolean ok;
+
+ ok = openOpenGLNative(_comp);
+
+ if( ! ok )
{
if ( useMSJDirect )
{
@@ -1691,6 +1741,7 @@ public class GLContext extends Object
throw new GL4JavaInitException ();
} else {
isInitialized = true;
+ glContextNumber++;
}
}
@@ -1755,7 +1806,7 @@ public class GLContext extends Object
* <p>
*
* @return boolean
- * @see GLContext#gljInit
+ * @see gl4java.GLContext#gljInit
* @see gl4java.awt.GLCanvas#cvsIsInit
*/
public final boolean gljIsInit()
@@ -1803,13 +1854,30 @@ public class GLContext extends Object
}
private final native void gljResizeNative( boolean isOwnWindow,
- int disp, int thisWin,
+ long disp, long thisWin,
int width, int height );
/**
+ * native C function of GLJ Library,
+ * which query if it uses the JDK 1.3 JAWT interface
+ * to fetch the native window handle
+ */
+ protected final native boolean useJAWT();
+
+ /**
+ * native C function of GLJ Library,
+ * which query if the JAWT Surface has changed !
+ *
+ * Use this after gljMakeCurrent -> jawt_lock !
+ *
+ * If true, we need a new GLContext !
+ */
+ protected final native boolean hasJAWTSurfaceChanged(long thisWin);
+
+ /**
* native C function to open the OpenGLwidget
*/
- protected final native boolean openOpenGLNative();
+ protected final native boolean openOpenGLNative(Component canvas);
/**
* native C function to check the gl types.
@@ -1856,24 +1924,153 @@ public class GLContext extends Object
return true;
}
+ private Thread ctxThread = null;
+ private Thread nextThread = null;
+
/**
*
* gljMakeCurrent checks whether GL4Java is initializes
* AND makes the GL-Context current for this thread.
*
- * It's more save to use �gljMakeCurrent�, instead of
- * �gljMakeCurrentNative�, because we do check if GL is initalised !
+ * <p>
+ *
+ * You MUST encapsulate your OpenGL call's within:
+ * <pre>
+ - gljMakeCurrent()
+ YOUR OpenGL commands here !
+ - gljFree()
+ * </pre>
*
* @return boolean
+ *
+ * @see gl4java.GLContext#gljSwap
+ * @see gl4java.awt.GLCanvas#display
+ * @see gl4java.awt.GLCanvas#sDisplay
*/
- public final boolean gljMakeCurrent()
+ public synchronized final boolean gljMakeCurrent()
{
if ( ! isInitialized || !glEnabled )
return false;
- return gljMakeCurrentNative( displayHandle,
- windowHandle,
- glContext);
+ Thread thisThread = Thread.currentThread();
+ boolean dbgPrinted = false;
+
+ /**
+ * force a thread switch to improve responsiveness !
+ *
+ * if an earmarked thread exist (nextThread)
+ * we have to wait ..
+ */
+ while (nextThread!=null && nextThread!=thisThread)
+ {
+ if(gljThreadDebug && !dbgPrinted)
+ {
+ System.out.println("wait-switch: "+thisThread);
+ System.out.println("\tctxThread="+ctxThread+", next="+nextThread);
+ dbgPrinted=true;
+ }
+
+ /**
+ * Force freeing this threads context .. to avoid a deadlock ..
+ * This makes sense, because it is possible,
+ * that the same thread enters this point twice,
+ * before calling gljFree !
+ */
+ if (ctxThread!=null && ctxThread==thisThread)
+ gljFree();
+
+ try {
+ // wait till earmarked nextThread has its chance ..
+ wait();
+ } catch (InterruptedException e) { }
+ }
+ dbgPrinted=false;
+
+ /**
+ * put all req. threads to the wait-state,
+ * if another thread owns the GLXContext !
+ */
+ while (ctxThread!=null && ctxThread!=thisThread)
+ {
+ /**
+ * remember this thread as earmarked,
+ * to be sure being the next one ...
+ */
+ nextThread = thisThread;
+
+ if(gljThreadDebug && !dbgPrinted)
+ {
+ System.out.println("wait-earmarked: "+thisThread);
+ System.out.println("\tctxThread="+ctxThread+", next="+nextThread);
+ dbgPrinted=true;
+ }
+
+ try {
+ // wait for gljFree to release the GLXContext
+ wait();
+ } catch (InterruptedException e) { }
+ }
+
+ ctxThread = thisThread ; // blocking asap ..
+
+ if(gljThreadDebug)
+ {
+ if(nextThread==thisThread)
+ {
+ System.out.println(thisThread+" <EarMarked Run>");
+ System.out.println("\tctxThread="+ctxThread+", next:=NULL");
+ } else {
+ System.out.println(thisThread);
+ System.out.println("\tctxThread="+ctxThread+", next="+nextThread);
+ }
+ }
+
+ /**
+ * if next thread gotten the context, it is no more earmarked ..
+ */
+ if(nextThread==thisThread)
+ nextThread = null;
+
+ boolean result = gljMakeCurrentNative( _comp, displayHandle,
+ windowHandle, glContext);
+
+ /**
+ * If glXMakeCurrent failed, nobody holds this GLXContext ..
+ */
+ if(!result)
+ {
+ ctxThread=null;
+ if(hasJAWTSurfaceChanged(windowHandle))
+ {
+ /**
+ * This can only happen while using JAWT ..
+ */
+ System.out.println("GL4Java: JAWT Surface-Change !!!");
+ System.out.println("\t destroying GLContext ...!!!");
+ gljDestroy();
+
+ System.out.println("GL4Java: JAWT Surface-Change !!!");
+ System.out.println("\t creating GLContext ...!!!");
+
+ /* try to establish a context to OpenGL */
+ try
+ {
+ System.out.println("GL4Java: JAWT Surface-Change !!!");
+ gljInit();
+ System.out.println("GL4Java: JAWT Surface-Change finished !!!");
+ }
+ catch( GL4JavaInitException e )
+ {
+ System.out.println( "\tcan't create a GL context\n");
+ System.out.println("GL4Java: JAWT Surface Change FAILED!!!");
+ }
+ System.out.println("\t GLContext Recreated ...!!!");
+ }
+ }
+
+ notifyAll(); // notify gljFree after action is done ..
+
+ return result;
}
@@ -1891,20 +2088,16 @@ public class GLContext extends Object
*
* @deprecated The argument freeContextFirst is obsolete !
*/
- public final boolean gljMakeCurrent(boolean freeContextFirst)
+ public synchronized final boolean gljMakeCurrent(boolean freeContextFirst)
{
- if ( ! isInitialized || !glEnabled )
- return false;
-
- return gljMakeCurrentNative( displayHandle,
- windowHandle,
- glContext);
+ return gljMakeCurrent();
}
private static final native boolean gljMakeCurrentNative(
- int disp,
- int thisWin,
- int glContext);
+ Component canvas,
+ long disp,
+ long thisWin,
+ long glContext);
/**
*
@@ -1917,21 +2110,24 @@ public class GLContext extends Object
/**
*
- * gljDestroy free�s AND destroy�s the GL Context
+ * gljDestroy destroy�s the GL Context
*
* This function should be called when removing
* a GLContext !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
*
+ * Call gljFree befor this method, to be sure ..
+ *
* @return void
*
- * @see GLContext#gljMakeCurrent
- * @see GLContext#gljSwap
+ * @see gl4java.GLContext#gljMakeCurrent
+ * @see gl4java.GLContext#gljFree
+ * @see gl4java.GLContext#gljSwap
*/
- public final synchronized boolean gljDestroy()
+ public synchronized final boolean gljDestroy()
{
boolean result = true;
- if (!gljDestroyNative())
+ if (!gljDestroyNative(_comp))
result = false;
windowHandle = 0;
@@ -1948,37 +2144,77 @@ public class GLContext extends Object
}
pData = 0;
+ isInitialized = false;
+ glContextNumber--;
return result;
}
- private final native boolean gljDestroyNative();
+ private final native boolean gljDestroyNative(Component canvas);
/**
*
* gljFree free�s the GL Context
*
- * This could be called after at last in your display function,
- * if you have GC problems ....
+ * This MUST be called at last in your display function !
*
* @return void
*
- * @see GLContext#gljMakeCurrent
- * @see GLContext#gljSwap
+ * @see gl4java.GLContext#gljMakeCurrent
+ * @see gl4java.GLContext#gljSwap
+ * @see gl4java.awt.GLCanvas#display
* @see gl4java.awt.GLCanvas#sDisplay
*/
- public final boolean gljFree()
+ public synchronized final boolean gljFree()
{
if ( ! isInitialized ) return false;
- return gljFreeNative ( displayHandle,
- windowHandle,
- glContext);
+ Thread thisThread = Thread.currentThread();
+ boolean dbgPrinted = false;
+
+ /**
+ * I do skip a lock for the gljFree semantics,
+ * because:
+ * - to minimize a deadlock
+ * - believing that gljFree is semantically the last call ;-)
+ * - see above -> redundant
+ while (ctxThread!=null && ctxThread!=thisThread)
+ {
+ if(gljThreadDebug && !dbgPrinted)
+ {
+ System.out.println("* wait: "+thisThread);
+ System.out.println("\tctxThread="+ctxThread+", next="+nextThread);
+ dbgPrinted=true;
+ }
+
+ try {
+ // wait for gljMakeCurrent to lock the GLXContext
+ wait();
+ } catch (InterruptedException e) { }
+ }
+
+ if(gljThreadDebug)
+ {
+ System.out.println("*: "+thisThread);
+ System.out.println("\tctxThread="+ctxThread+", next="+nextThread);
+ }
+ */
+
+
+ boolean result =
+ gljFreeNative ( _comp, displayHandle,
+ windowHandle,
+ glContext);
+ ctxThread = null ;
+ notifyAll();
+
+ return result;
}
- private static final native boolean gljFreeNative( int disp,
- int thisWin,
- int glContext );
+ private static final native boolean gljFreeNative( Component canvas,
+ long disp,
+ long thisWin,
+ long glContext );
/**
* swap method are for double buffering
@@ -1993,9 +2229,9 @@ public class GLContext extends Object
doubleBuffer);
}
- private static final native boolean gljSwapNative( int disp,
- int thisWin,
- int glContext,
+ private static final native boolean gljSwapNative( long disp,
+ long thisWin,
+ long glContext,
boolean doubleBuffer );
/**
@@ -2007,8 +2243,7 @@ public class GLContext extends Object
*
* @return boolean
*
- * @see GLContext#gljIsEnabled
- * @see GLContext#gljMakeCurrent
+ * @see gl4java.GLContext#gljMakeCurrent
*/
public void setEnabled(boolean b)
{
@@ -2022,8 +2257,8 @@ public class GLContext extends Object
*
* @return boolean
*
- * @see GLContext#setEnabled
- * @see GLContext#gljMakeCurrent
+ * @see gl4java.GLContext#setEnabled
+ * @see gl4java.GLContext#gljMakeCurrent
*/
public boolean isEnabled()
{
diff --git a/gl4java/GLEnum.java b/gl4java/GLEnum.java
index ee53d8b..a096e56 100644
--- a/gl4java/GLEnum.java
+++ b/gl4java/GLEnum.java
@@ -25,7 +25,7 @@ public interface GLEnum
public static final boolean GL_TRUE = true;
/**
- * C2J Parser Version 1.4 Beta
+ * C2J Parser Version 1.5 Beta
* Jausoft - Sven Goethel Software Development
* Reading from file: gl-enum-auto.orig.h . . .
* Destination-Class: gl4java_GLEnum !
@@ -1340,7 +1340,7 @@ public interface GLEnum
public static final int GL_ZERO = 0x0;
public static final int GL_ZOOM_X = 0x0D16;
public static final int GL_ZOOM_Y = 0x0D17;
-/* C2J Parser Version 1.4 Beta: Java program parsed successfully. */
+/* C2J Parser Version 1.5 Beta: Java program parsed successfully. */
}
diff --git a/gl4java/GLFunc.java b/gl4java/GLFunc.java
index 3879569..896f7ca 100644
--- a/gl4java/GLFunc.java
+++ b/gl4java/GLFunc.java
@@ -31,7 +31,7 @@ public String getClassVersion ( ) ;
public static final String[] GL_PROC_NAMES = {
/**
- * C2J Parser Version 1.4 Beta
+ * C2J Parser Version 1.5 Beta
* Jausoft - Sven Goethel Software Development
* Reading from file: gl-proto-auto.orig.h . . .
* Destination-Class: gl4java_GLFuncJauJNI !
@@ -474,11 +474,11 @@ public static final String[] GL_PROC_NAMES = {
"glMultiTexCoord4ivARB",
"glMultiTexCoord4sARB",
"glMultiTexCoord4svARB",
-/* C2J Parser Version 1.4 Beta: Java program parsed successfully. */
+/* C2J Parser Version 1.5 Beta: Java program parsed successfully. */
null
};
/**
- * C2J Parser Version 1.4 Beta
+ * C2J Parser Version 1.5 Beta
* Jausoft - Sven Goethel Software Development
* Reading from file: gl-proto-auto.orig.h . . .
* Destination-Class: gl4java_GLFuncJauJNI !
@@ -7431,7 +7431,7 @@ public static final String[] GL_PROC_NAMES = {
short[] v
) ;
-/* C2J Parser Version 1.4 Beta: Java program parsed successfully. */
+/* C2J Parser Version 1.5 Beta: Java program parsed successfully. */
}
diff --git a/gl4java/GLFuncJauJNI.java b/gl4java/GLFuncJauJNI.java
index 7887860..b8ee949 100644
--- a/gl4java/GLFuncJauJNI.java
+++ b/gl4java/GLFuncJauJNI.java
@@ -37,7 +37,7 @@ public final String getClassVersion ( )
/**
- * C2J Parser Version 1.4 Beta
+ * C2J Parser Version 1.5 Beta
* Jausoft - Sven Goethel Software Development
* Reading from file: gl-proto-auto.orig.h . . .
* Destination-Class: gl4java_GLFuncJauJNI !
@@ -6990,7 +6990,7 @@ public final String getClassVersion ( )
short[] v
) ;
-/* C2J Parser Version 1.4 Beta: Java program parsed successfully. */
+/* C2J Parser Version 1.5 Beta: Java program parsed successfully. */
}
diff --git a/gl4java/GLFuncJauJNInf.java b/gl4java/GLFuncJauJNInf.java
index 5187e83..68a5b8d 100644
--- a/gl4java/GLFuncJauJNInf.java
+++ b/gl4java/GLFuncJauJNInf.java
@@ -37,7 +37,7 @@ public String getClassVersion ( )
/**
- * C2J Parser Version 1.4 Beta
+ * C2J Parser Version 1.5 Beta
* Jausoft - Sven Goethel Software Development
* Reading from file: gl-proto-auto.orig.h . . .
* Destination-Class: gl4java_GLFuncJauJNInf !
@@ -6990,7 +6990,7 @@ public String getClassVersion ( )
short[] v
) ;
-/* C2J Parser Version 1.4 Beta: Java program parsed successfully. */
+/* C2J Parser Version 1.5 Beta: Java program parsed successfully. */
}
diff --git a/gl4java/GLUEnum.java b/gl4java/GLUEnum.java
index 41982b5..b34eb08 100644
--- a/gl4java/GLUEnum.java
+++ b/gl4java/GLUEnum.java
@@ -22,7 +22,7 @@ public interface GLUEnum
{
/**
- * C2J Parser Version 1.4 Beta
+ * C2J Parser Version 1.5 Beta
* Jausoft - Sven Goethel Software Development
* Reading from file: glu-enum-auto.orig.h . . .
* Destination-Class: gl4java_GLUEnum !
@@ -134,7 +134,7 @@ public interface GLUEnum
public static final int GLU_EDGE_FLAG = GLU_TESS_EDGE_FLAG;
public static final int GLU_END = GLU_TESS_END;
public static final int GLU_ERROR = GLU_TESS_ERROR;
-/* C2J Parser Version 1.4 Beta: Java program parsed successfully. */
+/* C2J Parser Version 1.5 Beta: Java program parsed successfully. */
}
diff --git a/gl4java/GLUFunc.java b/gl4java/GLUFunc.java
index a36448d..afee2cb 100644
--- a/gl4java/GLUFunc.java
+++ b/gl4java/GLUFunc.java
@@ -31,15 +31,19 @@ public String getNativeVersion ( ) ;
public String getClassVendor ( ) ;
public String getClassVersion ( ) ;
+public long gluNewQuadric( );
+public long gluNewNurbsRenderer( );
+public long gluNewTess( );
+
public void gluQuadricCallback(
- int qobj, int which,
+ long qobj, int which,
Object methodClassInstance,
String methodName,
String signature
);
public void gluNurbsCallback(
- int nobj, int which,
+ long nobj, int which,
Object methodClassInstance,
String methodName,
String signature
@@ -47,7 +51,7 @@ public void gluNurbsCallback(
public void gluTessCallback(
- int tobj, int which,
+ long tobj, int which,
Object methodClassInstance,
String methodName,
String signature,
@@ -58,14 +62,14 @@ public void gluTessCallback(
int voidArrayLen5
);
-public void gluDeleteQuadric( int qobj );
+public void gluDeleteQuadric( long qobj );
-public void gluDeleteNurbsRenderer( int nobj );
+public void gluDeleteNurbsRenderer( long nobj );
-public void gluDeleteTess( int tobj );
+public void gluDeleteTess( long tobj );
/**
- * C2J Parser Version 1.4 Beta
+ * C2J Parser Version 1.5 Beta
* Jausoft - Sven Goethel Software Development
* Reading from file: glu-proto-auto.orig.h . . .
* Destination-Class: gl4java_GLUFuncJauJNI !
@@ -319,20 +323,11 @@ public void gluDeleteTess( int tobj );
/**
* Original Function-Prototype :
* <pre>
- extern GLUquadricObj * gluNewQuadric ( void ) ;
- * </pre>
- */
- public int gluNewQuadric (
- ) ;
-
-/**
- * Original Function-Prototype :
- * <pre>
extern void gluQuadricDrawStyle ( GLUquadricObj * quadObject , GLenum drawStyle ) ;
* </pre>
*/
public void gluQuadricDrawStyle (
- int quadObject,
+ long quadObject,
int drawStyle
) ;
@@ -343,7 +338,7 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluQuadricOrientation (
- int quadObject,
+ long quadObject,
int orientation
) ;
@@ -354,7 +349,7 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluQuadricNormals (
- int quadObject,
+ long quadObject,
int normals
) ;
@@ -365,7 +360,7 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluQuadricTexture (
- int quadObject,
+ long quadObject,
boolean textureCoords
) ;
@@ -376,7 +371,7 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluCylinder (
- int qobj,
+ long qobj,
double baseRadius,
double topRadius,
double height,
@@ -391,7 +386,7 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluSphere (
- int qobj,
+ long qobj,
double radius,
int slices,
int stacks
@@ -404,7 +399,7 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluDisk (
- int qobj,
+ long qobj,
double innerRadius,
double outerRadius,
int slices,
@@ -418,7 +413,7 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluPartialDisk (
- int qobj,
+ long qobj,
double innerRadius,
double outerRadius,
int slices,
@@ -430,20 +425,11 @@ public void gluDeleteTess( int tobj );
/**
* Original Function-Prototype :
* <pre>
- extern GLUnurbsObj * gluNewNurbsRenderer ( void ) ;
- * </pre>
- */
- public int gluNewNurbsRenderer (
- ) ;
-
-/**
- * Original Function-Prototype :
- * <pre>
extern void gluLoadSamplingMatrices ( GLUnurbsObj * nobj , const GLfloat modelMatrix [ 16 ] , const GLfloat projMatrix [ 16 ] , const GLint viewport [ 4 ] ) ;
* </pre>
*/
public void gluLoadSamplingMatrices (
- int nobj,
+ long nobj,
float[] modelMatrix,
float[] projMatrix,
int[] viewport
@@ -456,7 +442,7 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluNurbsProperty (
- int nobj,
+ long nobj,
int property,
float value
) ;
@@ -468,7 +454,7 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluGetNurbsProperty (
- int nobj,
+ long nobj,
int property,
float[] value
) ;
@@ -480,7 +466,7 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluBeginCurve (
- int nobj
+ long nobj
) ;
/**
@@ -490,7 +476,7 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluEndCurve (
- int nobj
+ long nobj
) ;
/**
@@ -500,7 +486,7 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluNurbsCurve (
- int nobj,
+ long nobj,
int nknots,
float[] knot,
int stride,
@@ -516,7 +502,7 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluBeginSurface (
- int nobj
+ long nobj
) ;
/**
@@ -526,7 +512,7 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluEndSurface (
- int nobj
+ long nobj
) ;
/**
@@ -536,7 +522,7 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluNurbsSurface (
- int nobj,
+ long nobj,
int sknot_count,
float[] sknot,
int tknot_count,
@@ -556,7 +542,7 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluBeginTrim (
- int nobj
+ long nobj
) ;
/**
@@ -566,7 +552,7 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluEndTrim (
- int nobj
+ long nobj
) ;
/**
@@ -576,7 +562,7 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluPwlCurve (
- int nobj,
+ long nobj,
int count,
float[] array,
int stride,
@@ -586,44 +572,35 @@ public void gluDeleteTess( int tobj );
/**
* Original Function-Prototype :
* <pre>
- extern GLUtesselator * gluNewTess ( void ) ;
- * </pre>
- */
- public int gluNewTess (
- ) ;
-
-/**
- * Original Function-Prototype :
- * <pre>
extern void gluTessBeginPolygon ( GLUtesselator * tobj , void * polygon_data ) ;
* </pre>
*/
public void gluTessBeginPolygon (
- int tobj,
+ long tobj,
byte[] polygon_data
) ;
public void gluTessBeginPolygon (
- int tobj,
+ long tobj,
short[] polygon_data
) ;
public void gluTessBeginPolygon (
- int tobj,
+ long tobj,
int[] polygon_data
) ;
public void gluTessBeginPolygon (
- int tobj,
+ long tobj,
float[] polygon_data
) ;
public void gluTessBeginPolygon (
- int tobj,
+ long tobj,
double[] polygon_data
) ;
public void gluTessBeginPolygon (
- int tobj,
+ long tobj,
boolean[] polygon_data
) ;
public void gluTessBeginPolygon (
- int tobj,
+ long tobj,
long[] polygon_data
) ;
@@ -634,7 +611,7 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluTessBeginContour (
- int tobj
+ long tobj
) ;
/**
@@ -644,37 +621,37 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluTessVertex (
- int tobj,
+ long tobj,
double[] coords,
byte[] vertex_data
) ;
public void gluTessVertex (
- int tobj,
+ long tobj,
double[] coords,
short[] vertex_data
) ;
public void gluTessVertex (
- int tobj,
+ long tobj,
double[] coords,
int[] vertex_data
) ;
public void gluTessVertex (
- int tobj,
+ long tobj,
double[] coords,
float[] vertex_data
) ;
public void gluTessVertex (
- int tobj,
+ long tobj,
double[] coords,
double[] vertex_data
) ;
public void gluTessVertex (
- int tobj,
+ long tobj,
double[] coords,
boolean[] vertex_data
) ;
public void gluTessVertex (
- int tobj,
+ long tobj,
double[] coords,
long[] vertex_data
) ;
@@ -686,7 +663,7 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluTessEndContour (
- int tobj
+ long tobj
) ;
/**
@@ -696,7 +673,7 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluTessEndPolygon (
- int tobj
+ long tobj
) ;
/**
@@ -706,7 +683,7 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluTessProperty (
- int tobj,
+ long tobj,
int which,
double value
) ;
@@ -718,7 +695,7 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluTessNormal (
- int tobj,
+ long tobj,
double x,
double y,
double z
@@ -731,7 +708,7 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluGetTessProperty (
- int tobj,
+ long tobj,
int which,
double[] value
) ;
@@ -743,7 +720,7 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluBeginPolygon (
- int tobj
+ long tobj
) ;
/**
@@ -753,7 +730,7 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluNextContour (
- int tobj,
+ long tobj,
int type
) ;
@@ -764,10 +741,10 @@ public void gluDeleteTess( int tobj );
* </pre>
*/
public void gluEndPolygon (
- int tobj
+ long tobj
) ;
-/* C2J Parser Version 1.4 Beta: Java program parsed successfully. */
+/* C2J Parser Version 1.5 Beta: Java program parsed successfully. */
}
diff --git a/gl4java/GLUFuncJauJNI.java b/gl4java/GLUFuncJauJNI.java
index 439a758..5ba2f08 100644
--- a/gl4java/GLUFuncJauJNI.java
+++ b/gl4java/GLUFuncJauJNI.java
@@ -50,7 +50,7 @@ public final String getClassVersion ( )
* @see GLUFunc#gluNewQuadric
*/
public final native void gluQuadricCallback(
- int qobj, int which,
+ long qobj, int which,
Object methodClassInstance,
String methodName,
String signature
@@ -71,7 +71,7 @@ public final native void gluQuadricCallback(
* @see GLUFunc#gluNewNurbsRenderer
*/
public final native void gluNurbsCallback(
- int nobj, int which,
+ long nobj, int which,
Object methodClassInstance,
String methodName,
String signature
@@ -103,7 +103,7 @@ public final native void gluNurbsCallback(
* @see GLUFunc#gluNewTess
*/
public final native void gluTessCallback(
- int tobj, int which,
+ long tobj, int which,
Object methodClassInstance,
String methodName,
String signature,
@@ -120,7 +120,7 @@ public final native void gluTessCallback(
* @param qobj the quadratic id, for which all callback-methods
* should be de-registered
*/
-public final native void gluDeleteQuadric( int qobj );
+public final native void gluDeleteQuadric( long qobj );
/**
* The Callback de-registry function.
@@ -128,7 +128,7 @@ public final native void gluDeleteQuadric( int qobj );
* @param nobj the nurbs id, for which all callback-methods
* should be de-registered
*/
-public final native void gluDeleteNurbsRenderer( int nobj );
+public final native void gluDeleteNurbsRenderer( long nobj );
/**
* The Callback de-registry function.
@@ -136,10 +136,14 @@ public final native void gluDeleteNurbsRenderer( int nobj );
* @param tobj the tesselation id, for which all callback-methods
* should be de-registered
*/
-public final native void gluDeleteTess( int tobj );
+public final native void gluDeleteTess( long tobj );
+
+public final native long gluNewQuadric( );
+public final native long gluNewNurbsRenderer( );
+public final native long gluNewTess( );
/**
- * C2J Parser Version 1.4 Beta
+ * C2J Parser Version 1.5 Beta
* Jausoft - Sven Goethel Software Development
* Reading from file: glu-proto-auto.orig.h . . .
* Destination-Class: gl4java_GLUFuncJauJNI !
@@ -393,20 +397,11 @@ public final native void gluDeleteTess( int tobj );
/**
* Original Function-Prototype :
* <pre>
- extern GLUquadricObj * gluNewQuadric ( void ) ;
- * </pre>
- */
- public final native int gluNewQuadric (
- ) ;
-
-/**
- * Original Function-Prototype :
- * <pre>
extern void gluQuadricDrawStyle ( GLUquadricObj * quadObject , GLenum drawStyle ) ;
* </pre>
*/
public final native void gluQuadricDrawStyle (
- int quadObject,
+ long quadObject,
int drawStyle
) ;
@@ -417,7 +412,7 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluQuadricOrientation (
- int quadObject,
+ long quadObject,
int orientation
) ;
@@ -428,7 +423,7 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluQuadricNormals (
- int quadObject,
+ long quadObject,
int normals
) ;
@@ -439,7 +434,7 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluQuadricTexture (
- int quadObject,
+ long quadObject,
boolean textureCoords
) ;
@@ -450,7 +445,7 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluCylinder (
- int qobj,
+ long qobj,
double baseRadius,
double topRadius,
double height,
@@ -465,7 +460,7 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluSphere (
- int qobj,
+ long qobj,
double radius,
int slices,
int stacks
@@ -478,7 +473,7 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluDisk (
- int qobj,
+ long qobj,
double innerRadius,
double outerRadius,
int slices,
@@ -492,7 +487,7 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluPartialDisk (
- int qobj,
+ long qobj,
double innerRadius,
double outerRadius,
int slices,
@@ -504,20 +499,11 @@ public final native void gluDeleteTess( int tobj );
/**
* Original Function-Prototype :
* <pre>
- extern GLUnurbsObj * gluNewNurbsRenderer ( void ) ;
- * </pre>
- */
- public final native int gluNewNurbsRenderer (
- ) ;
-
-/**
- * Original Function-Prototype :
- * <pre>
extern void gluLoadSamplingMatrices ( GLUnurbsObj * nobj , const GLfloat modelMatrix [ 16 ] , const GLfloat projMatrix [ 16 ] , const GLint viewport [ 4 ] ) ;
* </pre>
*/
public final native void gluLoadSamplingMatrices (
- int nobj,
+ long nobj,
float[] modelMatrix,
float[] projMatrix,
int[] viewport
@@ -530,7 +516,7 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluNurbsProperty (
- int nobj,
+ long nobj,
int property,
float value
) ;
@@ -542,7 +528,7 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluGetNurbsProperty (
- int nobj,
+ long nobj,
int property,
float[] value
) ;
@@ -554,7 +540,7 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluBeginCurve (
- int nobj
+ long nobj
) ;
/**
@@ -564,7 +550,7 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluEndCurve (
- int nobj
+ long nobj
) ;
/**
@@ -574,7 +560,7 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluNurbsCurve (
- int nobj,
+ long nobj,
int nknots,
float[] knot,
int stride,
@@ -590,7 +576,7 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluBeginSurface (
- int nobj
+ long nobj
) ;
/**
@@ -600,7 +586,7 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluEndSurface (
- int nobj
+ long nobj
) ;
/**
@@ -610,7 +596,7 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluNurbsSurface (
- int nobj,
+ long nobj,
int sknot_count,
float[] sknot,
int tknot_count,
@@ -630,7 +616,7 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluBeginTrim (
- int nobj
+ long nobj
) ;
/**
@@ -640,7 +626,7 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluEndTrim (
- int nobj
+ long nobj
) ;
/**
@@ -650,7 +636,7 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluPwlCurve (
- int nobj,
+ long nobj,
int count,
float[] array,
int stride,
@@ -660,44 +646,35 @@ public final native void gluDeleteTess( int tobj );
/**
* Original Function-Prototype :
* <pre>
- extern GLUtesselator * gluNewTess ( void ) ;
- * </pre>
- */
- public final native int gluNewTess (
- ) ;
-
-/**
- * Original Function-Prototype :
- * <pre>
extern void gluTessBeginPolygon ( GLUtesselator * tobj , void * polygon_data ) ;
* </pre>
*/
public final native void gluTessBeginPolygon (
- int tobj,
+ long tobj,
byte[] polygon_data
) ;
public final native void gluTessBeginPolygon (
- int tobj,
+ long tobj,
short[] polygon_data
) ;
public final native void gluTessBeginPolygon (
- int tobj,
+ long tobj,
int[] polygon_data
) ;
public final native void gluTessBeginPolygon (
- int tobj,
+ long tobj,
float[] polygon_data
) ;
public final native void gluTessBeginPolygon (
- int tobj,
+ long tobj,
double[] polygon_data
) ;
public final native void gluTessBeginPolygon (
- int tobj,
+ long tobj,
boolean[] polygon_data
) ;
public final native void gluTessBeginPolygon (
- int tobj,
+ long tobj,
long[] polygon_data
) ;
@@ -708,7 +685,7 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluTessBeginContour (
- int tobj
+ long tobj
) ;
/**
@@ -718,37 +695,37 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluTessVertex (
- int tobj,
+ long tobj,
double[] coords,
byte[] vertex_data
) ;
public final native void gluTessVertex (
- int tobj,
+ long tobj,
double[] coords,
short[] vertex_data
) ;
public final native void gluTessVertex (
- int tobj,
+ long tobj,
double[] coords,
int[] vertex_data
) ;
public final native void gluTessVertex (
- int tobj,
+ long tobj,
double[] coords,
float[] vertex_data
) ;
public final native void gluTessVertex (
- int tobj,
+ long tobj,
double[] coords,
double[] vertex_data
) ;
public final native void gluTessVertex (
- int tobj,
+ long tobj,
double[] coords,
boolean[] vertex_data
) ;
public final native void gluTessVertex (
- int tobj,
+ long tobj,
double[] coords,
long[] vertex_data
) ;
@@ -760,7 +737,7 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluTessEndContour (
- int tobj
+ long tobj
) ;
/**
@@ -770,7 +747,7 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluTessEndPolygon (
- int tobj
+ long tobj
) ;
/**
@@ -780,7 +757,7 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluTessProperty (
- int tobj,
+ long tobj,
int which,
double value
) ;
@@ -792,7 +769,7 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluTessNormal (
- int tobj,
+ long tobj,
double x,
double y,
double z
@@ -805,7 +782,7 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluGetTessProperty (
- int tobj,
+ long tobj,
int which,
double[] value
) ;
@@ -817,7 +794,7 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluBeginPolygon (
- int tobj
+ long tobj
) ;
/**
@@ -827,7 +804,7 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluNextContour (
- int tobj,
+ long tobj,
int type
) ;
@@ -838,10 +815,10 @@ public final native void gluDeleteTess( int tobj );
* </pre>
*/
public final native void gluEndPolygon (
- int tobj
+ long tobj
) ;
-/* C2J Parser Version 1.4 Beta: Java program parsed successfully. */
+/* C2J Parser Version 1.5 Beta: Java program parsed successfully. */
}
diff --git a/gl4java/GLUFuncJauJNInf.java b/gl4java/GLUFuncJauJNInf.java
index b1ea21a..f509fe4 100644
--- a/gl4java/GLUFuncJauJNInf.java
+++ b/gl4java/GLUFuncJauJNInf.java
@@ -50,7 +50,7 @@ public String getClassVersion ( )
* @see GLUFunc#gluNewQuadric
*/
public native void gluQuadricCallback(
- int qobj, int which,
+ long qobj, int which,
Object methodClassInstance,
String methodName,
String signature
@@ -71,7 +71,7 @@ public native void gluQuadricCallback(
* @see GLUFunc#gluNewNurbsRenderer
*/
public native void gluNurbsCallback(
- int nobj, int which,
+ long nobj, int which,
Object methodClassInstance,
String methodName,
String signature
@@ -103,7 +103,7 @@ public native void gluNurbsCallback(
* @see GLUFunc#gluNewTess
*/
public native void gluTessCallback(
- int tobj, int which,
+ long tobj, int which,
Object methodClassInstance,
String methodName,
String signature,
@@ -120,7 +120,7 @@ public native void gluTessCallback(
* @param qobj the quadratic id, for which all callback-methods
* should be de-registered
*/
-public native void gluDeleteQuadric( int qobj );
+public native void gluDeleteQuadric( long qobj );
/**
* The Callback de-registry function.
@@ -128,7 +128,7 @@ public native void gluDeleteQuadric( int qobj );
* @param nobj the nurbs id, for which all callback-methods
* should be de-registered
*/
-public native void gluDeleteNurbsRenderer( int nobj );
+public native void gluDeleteNurbsRenderer( long nobj );
/**
* The Callback de-registry function.
@@ -136,10 +136,14 @@ public native void gluDeleteNurbsRenderer( int nobj );
* @param tobj the tesselation id, for which all callback-methods
* should be de-registered
*/
-public native void gluDeleteTess( int tobj );
+public native void gluDeleteTess( long tobj );
+
+public native long gluNewQuadric( );
+public native long gluNewNurbsRenderer( );
+public native long gluNewTess( );
/**
- * C2J Parser Version 1.4 Beta
+ * C2J Parser Version 1.5 Beta
* Jausoft - Sven Goethel Software Development
* Reading from file: glu-proto-auto.orig.h . . .
* Destination-Class: gl4java_GLUFuncJauJNInf !
@@ -393,20 +397,11 @@ public native void gluDeleteTess( int tobj );
/**
* Original Function-Prototype :
* <pre>
- extern GLUquadricObj * gluNewQuadric ( void ) ;
- * </pre>
- */
- public native int gluNewQuadric (
- ) ;
-
-/**
- * Original Function-Prototype :
- * <pre>
extern void gluQuadricDrawStyle ( GLUquadricObj * quadObject , GLenum drawStyle ) ;
* </pre>
*/
public native void gluQuadricDrawStyle (
- int quadObject,
+ long quadObject,
int drawStyle
) ;
@@ -417,7 +412,7 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluQuadricOrientation (
- int quadObject,
+ long quadObject,
int orientation
) ;
@@ -428,7 +423,7 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluQuadricNormals (
- int quadObject,
+ long quadObject,
int normals
) ;
@@ -439,7 +434,7 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluQuadricTexture (
- int quadObject,
+ long quadObject,
boolean textureCoords
) ;
@@ -450,7 +445,7 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluCylinder (
- int qobj,
+ long qobj,
double baseRadius,
double topRadius,
double height,
@@ -465,7 +460,7 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluSphere (
- int qobj,
+ long qobj,
double radius,
int slices,
int stacks
@@ -478,7 +473,7 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluDisk (
- int qobj,
+ long qobj,
double innerRadius,
double outerRadius,
int slices,
@@ -492,7 +487,7 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluPartialDisk (
- int qobj,
+ long qobj,
double innerRadius,
double outerRadius,
int slices,
@@ -504,20 +499,11 @@ public native void gluDeleteTess( int tobj );
/**
* Original Function-Prototype :
* <pre>
- extern GLUnurbsObj * gluNewNurbsRenderer ( void ) ;
- * </pre>
- */
- public native int gluNewNurbsRenderer (
- ) ;
-
-/**
- * Original Function-Prototype :
- * <pre>
extern void gluLoadSamplingMatrices ( GLUnurbsObj * nobj , const GLfloat modelMatrix [ 16 ] , const GLfloat projMatrix [ 16 ] , const GLint viewport [ 4 ] ) ;
* </pre>
*/
public native void gluLoadSamplingMatrices (
- int nobj,
+ long nobj,
float[] modelMatrix,
float[] projMatrix,
int[] viewport
@@ -530,7 +516,7 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluNurbsProperty (
- int nobj,
+ long nobj,
int property,
float value
) ;
@@ -542,7 +528,7 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluGetNurbsProperty (
- int nobj,
+ long nobj,
int property,
float[] value
) ;
@@ -554,7 +540,7 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluBeginCurve (
- int nobj
+ long nobj
) ;
/**
@@ -564,7 +550,7 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluEndCurve (
- int nobj
+ long nobj
) ;
/**
@@ -574,7 +560,7 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluNurbsCurve (
- int nobj,
+ long nobj,
int nknots,
float[] knot,
int stride,
@@ -590,7 +576,7 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluBeginSurface (
- int nobj
+ long nobj
) ;
/**
@@ -600,7 +586,7 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluEndSurface (
- int nobj
+ long nobj
) ;
/**
@@ -610,7 +596,7 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluNurbsSurface (
- int nobj,
+ long nobj,
int sknot_count,
float[] sknot,
int tknot_count,
@@ -630,7 +616,7 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluBeginTrim (
- int nobj
+ long nobj
) ;
/**
@@ -640,7 +626,7 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluEndTrim (
- int nobj
+ long nobj
) ;
/**
@@ -650,7 +636,7 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluPwlCurve (
- int nobj,
+ long nobj,
int count,
float[] array,
int stride,
@@ -660,44 +646,35 @@ public native void gluDeleteTess( int tobj );
/**
* Original Function-Prototype :
* <pre>
- extern GLUtesselator * gluNewTess ( void ) ;
- * </pre>
- */
- public native int gluNewTess (
- ) ;
-
-/**
- * Original Function-Prototype :
- * <pre>
extern void gluTessBeginPolygon ( GLUtesselator * tobj , void * polygon_data ) ;
* </pre>
*/
public native void gluTessBeginPolygon (
- int tobj,
+ long tobj,
byte[] polygon_data
) ;
public native void gluTessBeginPolygon (
- int tobj,
+ long tobj,
short[] polygon_data
) ;
public native void gluTessBeginPolygon (
- int tobj,
+ long tobj,
int[] polygon_data
) ;
public native void gluTessBeginPolygon (
- int tobj,
+ long tobj,
float[] polygon_data
) ;
public native void gluTessBeginPolygon (
- int tobj,
+ long tobj,
double[] polygon_data
) ;
public native void gluTessBeginPolygon (
- int tobj,
+ long tobj,
boolean[] polygon_data
) ;
public native void gluTessBeginPolygon (
- int tobj,
+ long tobj,
long[] polygon_data
) ;
@@ -708,7 +685,7 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluTessBeginContour (
- int tobj
+ long tobj
) ;
/**
@@ -718,37 +695,37 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluTessVertex (
- int tobj,
+ long tobj,
double[] coords,
byte[] vertex_data
) ;
public native void gluTessVertex (
- int tobj,
+ long tobj,
double[] coords,
short[] vertex_data
) ;
public native void gluTessVertex (
- int tobj,
+ long tobj,
double[] coords,
int[] vertex_data
) ;
public native void gluTessVertex (
- int tobj,
+ long tobj,
double[] coords,
float[] vertex_data
) ;
public native void gluTessVertex (
- int tobj,
+ long tobj,
double[] coords,
double[] vertex_data
) ;
public native void gluTessVertex (
- int tobj,
+ long tobj,
double[] coords,
boolean[] vertex_data
) ;
public native void gluTessVertex (
- int tobj,
+ long tobj,
double[] coords,
long[] vertex_data
) ;
@@ -760,7 +737,7 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluTessEndContour (
- int tobj
+ long tobj
) ;
/**
@@ -770,7 +747,7 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluTessEndPolygon (
- int tobj
+ long tobj
) ;
/**
@@ -780,7 +757,7 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluTessProperty (
- int tobj,
+ long tobj,
int which,
double value
) ;
@@ -792,7 +769,7 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluTessNormal (
- int tobj,
+ long tobj,
double x,
double y,
double z
@@ -805,7 +782,7 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluGetTessProperty (
- int tobj,
+ long tobj,
int which,
double[] value
) ;
@@ -817,7 +794,7 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluBeginPolygon (
- int tobj
+ long tobj
) ;
/**
@@ -827,7 +804,7 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluNextContour (
- int tobj,
+ long tobj,
int type
) ;
@@ -838,10 +815,10 @@ public native void gluDeleteTess( int tobj );
* </pre>
*/
public native void gluEndPolygon (
- int tobj
+ long tobj
) ;
-/* C2J Parser Version 1.4 Beta: Java program parsed successfully. */
+/* C2J Parser Version 1.5 Beta: Java program parsed successfully. */
}
diff --git a/gl4java/applet/SimpleGLAnimApplet1.java b/gl4java/applet/SimpleGLAnimApplet1.java
index db74690..aa2b97b 100644
--- a/gl4java/applet/SimpleGLAnimApplet1.java
+++ b/gl4java/applet/SimpleGLAnimApplet1.java
@@ -72,6 +72,7 @@ public class SimpleGLAnimApplet1 extends Applet
{
checkUseFpsSleep.setState(canvas.getUseFpsSleep());
checkUseRepaint.setState(canvas.getUseRepaint());
+ canvas.addMouseListener(this);
canvas.start();
}
@@ -111,10 +112,55 @@ public class SimpleGLAnimApplet1 extends Applet
{
}
+ Container _cont = null;
+
public void mouseClicked( MouseEvent evt )
{
Component comp = evt.getComponent();
+ if ((evt.getModifiers() & evt.BUTTON3_MASK) != 0)
+ {
+ if(comp instanceof GLAnimCanvas)
+ {
+ GLAnimCanvas glcvs = (GLAnimCanvas)comp;
+ glcvs.cvsDispose();
+
+ Container c = glcvs.getParent();
+ c.remove(glcvs);
+
+ System.out.println("\n\nremoved: "+glcvs);
+ System.out.println("Global GLAnimCanvas Render-Thread Number: "+ GLAnimCanvas.getGlobalThreadNumber());
+ System.out.println("GLContextNumber: "+
+ GLContext.getNativeGLContextNumber());
+
+ glcvs.setVisible(true);
+
+ if(c instanceof Frame)
+ {
+ Frame of = (Frame)c;
+ of.dispose();
+ of=null;
+
+ _cont.add(canvas);
+ _cont.doLayout();
+ } else if(c instanceof Panel)
+ {
+ _cont=c;
+ Frame f = new Frame("EXTRA");
+ f.add(glcvs);
+ f.pack();
+ f.setVisible(true);
+ }
+ glcvs.start();
+
+ System.out.println("\nadded+started: "+glcvs);
+ System.out.println("Global GLAnimCanvas Render-Thread Number: "+ GLAnimCanvas.getGlobalThreadNumber());
+ System.out.println("GLContextNumber: "+
+ GLContext.getNativeGLContextNumber());
+ }
+ return;
+ }
+
if( canvas!=null && comp.equals(buttonFps) )
{
double fps = 0;
diff --git a/gl4java/awt/GLAnimCanvas.java b/gl4java/awt/GLAnimCanvas.java
index 77fd21f..6133e60 100644
--- a/gl4java/awt/GLAnimCanvas.java
+++ b/gl4java/awt/GLAnimCanvas.java
@@ -83,6 +83,13 @@ import java.lang.Math;
* because a GL-Context can be shared by many threads,
* but one thread can have just one GL-Context !
*
+ * <p>
+ *
+ * Since GL4Java 2.5.2 and using a JVM >= 1.3
+ * the multithreading support is stable !
+ *
+ * <p>
+ *
* (comments welcome)
*
* <p>
@@ -102,7 +109,7 @@ import java.lang.Math;
<a href="GLAnimCanvas.html#ReInit()">ReInit - ReInitialisation after stop for setSuspended(false)</a>
* </pre>
*
- * @see GLCanvas
+ * @see gl4java.awt.GLCanvas
* @version 2.0, 21. April 1999
* @author Sven Goethel
*
@@ -116,11 +123,18 @@ public class GLAnimCanvas extends GLCanvas
*
* A little GUI is supported !
*
- * @see GLAnimCanvas#run
+ * @see gl4java.awt.GLAnimCanvas#run
*/
protected double FramesPerSec=20;
protected long mSecPerFrame=0;
+ protected static int globalThreadNumber=0;
+
+ public static int getGlobalThreadNumber()
+ {
+ return globalThreadNumber;
+ }
+
/**
* the delays ..
*/
@@ -129,16 +143,16 @@ public class GLAnimCanvas extends GLCanvas
/**
* The thread for referencing Thread (Animation)
*
- * @see GLAnimCanvas#stop
- * @see GLAnimCanvas#start
- * @see GLAnimCanvas#run
+ * @see gl4java.awt.GLAnimCanvas#stop
+ * @see gl4java.awt.GLAnimCanvas#start
+ * @see gl4java.awt.GLAnimCanvas#run
*/
protected Thread killme = null;
/**
* Instead of using suspend (JAVA2)
*
- * @see GLAnimCanvas#run
+ * @see gl4java.awt.GLAnimCanvas#run
*/
protected boolean threadSuspended = false;
@@ -151,7 +165,7 @@ public class GLAnimCanvas extends GLCanvas
*
* Constructor
*
- * @see GLCanvas#GLCanvas
+ * @see gl4java.awt.GLCanvas#GLCanvas
*
*/
public GLAnimCanvas( int width, int height,
@@ -169,7 +183,7 @@ public class GLAnimCanvas extends GLCanvas
*
* Uses the default GLFunc and GLUFunc implementation !
*
- * @see GLCanvas#GLCanvas
+ * @see gl4java.awt.GLCanvas#GLCanvas
*
*/
public GLAnimCanvas( int width, int height )
@@ -206,16 +220,24 @@ public class GLAnimCanvas extends GLCanvas
*
* <p>
*
+ * You MUST encapsulate your OpenGL call's within:
+ * <pre>
+ - glj.gljMakeCurrent()
+ YOUR OpenGL commands here !
+ - glj.gljFree()
+ * </pre>
+ * <p>
+ *
* You should set shallWeRender here,
* to signalize the animation-loop 'run' to supsend
* <p>
* To restart the thread, just call setSuspended(false)
*
- * @see GLAnimCanvas#shallWeRender
- * @see GLAnimCanvas#run
- * @see GLAnimCanvas#setSuspended
- * @see GLCanvas#sDisplay
- * @see GLCanvas#paint
+ * @see gl4java.awt.GLAnimCanvas#shallWeRender
+ * @see gl4java.awt.GLAnimCanvas#run
+ * @see gl4java.awt.GLAnimCanvas#setSuspended
+ * @see gl4java.awt.GLCanvas#sDisplay
+ * @see gl4java.awt.GLCanvas#paint
*/
public void display()
{
@@ -229,7 +251,7 @@ public class GLAnimCanvas extends GLCanvas
return;
}
- if( glj.gljMakeCurrent(true) == false )
+ if( glj.gljMakeCurrent() == false )
{
if(glj.gljClassDebug)
System.out.println("GLAnimCanvas problem in gljMakeCurrent() method");
@@ -248,7 +270,7 @@ public class GLAnimCanvas extends GLCanvas
* ReInit should be overwritten by you,
* to enter your re-initialisation within setSuspended(false)
*
- * @see GLAnimCanvas#setSuspended
+ * @see gl4java.awt.GLAnimCanvas#setSuspended
*/
public void ReInit()
{
@@ -271,8 +293,8 @@ public class GLAnimCanvas extends GLCanvas
* <p>
*
* @param b if true, uses repaint (default), otherwise directly sDisplay
- * @see GLCanvas#sDisplay
- * @see GLAnimCanvas#setUseFpsSleep
+ * @see gl4java.awt.GLCanvas#sDisplay
+ * @see gl4java.awt.GLAnimCanvas#setUseFpsSleep
*/
public void setUseRepaint(boolean b)
{
@@ -288,8 +310,8 @@ public class GLAnimCanvas extends GLCanvas
* <p>
*
* @param b if true, uses Fps sleeping, else not !
- * @see GLCanvas#sDisplay
- * @see GLAnimCanvas#setUseRepaint
+ * @see gl4java.awt.GLCanvas#sDisplay
+ * @see gl4java.awt.GLAnimCanvas#setUseRepaint
*/
public void setUseFpsSleep(boolean b)
{
@@ -324,21 +346,42 @@ public class GLAnimCanvas extends GLCanvas
public synchronized void stop()
{
killme = null;
- threadSuspended=false;
- notify();
+ threadSuspended=false;
+
+ notifyAll();
}
/**
+ * You should call this before releasing/dispose this Window !
+ * Also you can overwrite this class,
+ * to dispose your own elements, e.g. a Frame etc. -
+ * but be shure that you call
+ * cvsDispose implementation call this one !
+ *
+ * This function calls gljDestroy of GLContext !
+ *
+ * @see gl4java.GLContext#gljDestroy
+ * @see gl4java.awt.GLCanvas#cvsDispose
+ * @see gl4java.awt.GLCanvas#doCleanup
+ */
+ public void cvsDispose()
+ {
+ stop();
+ super.cvsDispose();
+ }
+
+ /**
* Should be set in display,
* whether to render or not while the animation loop
* <p>
* If shallWeRender is false,
* this thread will suspend !
*
- * @see GLAnimCanvas#display
- * @see GLAnimCanvas#run
+ * @see gl4java.awt.GLAnimCanvas#display
+ * @see gl4java.awt.GLAnimCanvas#run
*/
protected boolean shallWeRender = true;
+ protected boolean isRunning = false;
private long _fDelay = 0;
private long _fDelay_Frames = 10;
@@ -349,14 +392,18 @@ public class GLAnimCanvas extends GLCanvas
* The running loop for animations
* which initiates the call of display
*
- * @see GLAnimCanvas#shallWeRender
- * @see GLAnimCanvas#display
- * @see GLAnimCanvas#diplay
+ * @see gl4java.awt.GLAnimCanvas#shallWeRender
+ * @see gl4java.awt.GLAnimCanvas#display
*/
public void run()
{
Thread thisThread = Thread.currentThread();
+ isRunning = true;
+
+ synchronized (this) {
+ globalThreadNumber++;
+ }
while (killme==thisThread)
{
@@ -370,8 +417,7 @@ public class GLAnimCanvas extends GLCanvas
else
sDisplay();
} else {
- // lets sleep ...
- synchronized (this) {
+ synchronized (this) {
threadSuspended=true;
}
}
@@ -399,7 +445,9 @@ public class GLAnimCanvas extends GLCanvas
}
Thread.currentThread().sleep(dFpsMilli, 0 );
- }
+ } else {
+ Thread.yield();
+ }
if (threadSuspended) {
stopFpsCounter();
@@ -411,6 +459,15 @@ public class GLAnimCanvas extends GLCanvas
} catch (InterruptedException e)
{}
}
+
+ if(glj!=null)
+ glj.gljFree(); // just to be sure ..
+
+ synchronized (this) {
+ globalThreadNumber--;
+ }
+
+ isRunning = false;
}
/**
@@ -422,8 +479,8 @@ public class GLAnimCanvas extends GLCanvas
* @param suspend if true the thread will be suspended,
* if false, the thread will be (re)started
*
- * @see GLAnimCanvas#isAlive
- * @see GLAnimCanvas#start
+ * @see gl4java.awt.GLAnimCanvas#isAlive
+ * @see gl4java.awt.GLAnimCanvas#start
*/
public void setSuspended(boolean suspend)
{
@@ -442,8 +499,8 @@ public class GLAnimCanvas extends GLCanvas
* @param reInit if true the ReInit will be called additionally,
* where the user can set additional initialisations
*
- * @see GLAnimCanvas#isAlive
- * @see GLAnimCanvas#start
+ * @see gl4java.awt.GLAnimCanvas#isAlive
+ * @see gl4java.awt.GLAnimCanvas#start
*/
public synchronized void setSuspended(boolean suspend, boolean reInit)
{
@@ -461,17 +518,17 @@ public class GLAnimCanvas extends GLCanvas
ReInit();
threadSuspended=false;
- notify();
+ notifyAll();
}
}
/**
* is the thread alive, means is started and not died ?
*
- * @see GLAnimCanvas#run
- * @see GLAnimCanvas#setSuspended
- * @see GLAnimCanvas#start
- * @see GLAnimCanvas#stop
+ * @see gl4java.awt.GLAnimCanvas#run
+ * @see gl4java.awt.GLAnimCanvas#setSuspended
+ * @see gl4java.awt.GLAnimCanvas#start
+ * @see gl4java.awt.GLAnimCanvas#stop
*/
public boolean isAlive()
{
@@ -483,10 +540,10 @@ public class GLAnimCanvas extends GLCanvas
* is the thread suspended, means is started but waiting,
* or not alive (ok :-| - but it is practical)
*
- * @see GLAnimCanvas#run
- * @see GLAnimCanvas#setSuspended
- * @see GLAnimCanvas#start
- * @see GLAnimCanvas#stop
+ * @see gl4java.awt.GLAnimCanvas#run
+ * @see gl4java.awt.GLAnimCanvas#setSuspended
+ * @see gl4java.awt.GLAnimCanvas#start
+ * @see gl4java.awt.GLAnimCanvas#stop
*/
public boolean isSuspended()
{
@@ -507,14 +564,14 @@ public class GLAnimCanvas extends GLCanvas
* this function is called automatically by
* start and setSuspended
*
- * @see GLAnimCanvas#start
- * @see GLAnimCanvas#setSuspended
- * @see GLAnimCanvas#resetFpsCounter
- * @see GLAnimCanvas#stopFpsCounter
- * @see GLAnimCanvas#getFps
- * @see GLAnimCanvas#getFpsDuration
- * @see GLAnimCanvas#getFpsFrames
- * @see GLAnimCanvas#setVerboseFps
+ * @see gl4java.awt.GLAnimCanvas#start
+ * @see gl4java.awt.GLAnimCanvas#setSuspended
+ * @see gl4java.awt.GLAnimCanvas#resetFpsCounter
+ * @see gl4java.awt.GLAnimCanvas#stopFpsCounter
+ * @see gl4java.awt.GLAnimCanvas#getFps
+ * @see gl4java.awt.GLAnimCanvas#getFpsDuration
+ * @see gl4java.awt.GLAnimCanvas#getFpsFrames
+ * @see gl4java.awt.GLAnimCanvas#setVerboseFps
*/
public void resetFpsCounter()
{
@@ -535,14 +592,14 @@ public class GLAnimCanvas extends GLCanvas
* All data's are print out on System.out
* if verboseFps is set !
*
- * @see GLAnimCanvas#run
- * @see GLAnimCanvas#shallWeRender
- * @see GLAnimCanvas#resetFpsCounter
- * @see GLAnimCanvas#stopFpsCounter
- * @see GLAnimCanvas#getFps
- * @see GLAnimCanvas#getFpsDuration
- * @see GLAnimCanvas#getFpsFrames
- * @see GLAnimCanvas#setVerboseFps
+ * @see gl4java.awt.GLAnimCanvas#run
+ * @see gl4java.awt.GLAnimCanvas#shallWeRender
+ * @see gl4java.awt.GLAnimCanvas#resetFpsCounter
+ * @see gl4java.awt.GLAnimCanvas#stopFpsCounter
+ * @see gl4java.awt.GLAnimCanvas#getFps
+ * @see gl4java.awt.GLAnimCanvas#getFpsDuration
+ * @see gl4java.awt.GLAnimCanvas#getFpsFrames
+ * @see gl4java.awt.GLAnimCanvas#setVerboseFps
*/
public void stopFpsCounter()
{
@@ -571,14 +628,14 @@ public class GLAnimCanvas extends GLCanvas
* <p>
* verboseFps is set to true by default !
*
- * @see GLAnimCanvas#run
- * @see GLAnimCanvas#shallWeRender
- * @see GLAnimCanvas#resetFpsCounter
- * @see GLAnimCanvas#stopFpsCounter
- * @see GLAnimCanvas#getFps
- * @see GLAnimCanvas#getFpsDuration
- * @see GLAnimCanvas#getFpsFrames
- * @see GLAnimCanvas#setVerboseFps
+ * @see gl4java.awt.GLAnimCanvas#run
+ * @see gl4java.awt.GLAnimCanvas#shallWeRender
+ * @see gl4java.awt.GLAnimCanvas#resetFpsCounter
+ * @see gl4java.awt.GLAnimCanvas#stopFpsCounter
+ * @see gl4java.awt.GLAnimCanvas#getFps
+ * @see gl4java.awt.GLAnimCanvas#getFpsDuration
+ * @see gl4java.awt.GLAnimCanvas#getFpsFrames
+ * @see gl4java.awt.GLAnimCanvas#setVerboseFps
*/
public void setVerboseFps(boolean v)
{
@@ -590,12 +647,12 @@ public class GLAnimCanvas extends GLCanvas
* <p>
* this data is avaiable after calling stopFpsCounter
*
- * @see GLAnimCanvas#resetFpsCounter
- * @see GLAnimCanvas#stopFpsCounter
- * @see GLAnimCanvas#getFps
- * @see GLAnimCanvas#getFpsDuration
- * @see GLAnimCanvas#getFpsFrames
- * @see GLAnimCanvas#setVerboseFps
+ * @see gl4java.awt.GLAnimCanvas#resetFpsCounter
+ * @see gl4java.awt.GLAnimCanvas#stopFpsCounter
+ * @see gl4java.awt.GLAnimCanvas#getFps
+ * @see gl4java.awt.GLAnimCanvas#getFpsDuration
+ * @see gl4java.awt.GLAnimCanvas#getFpsFrames
+ * @see gl4java.awt.GLAnimCanvas#setVerboseFps
*/
public double getFps()
{
@@ -607,12 +664,12 @@ public class GLAnimCanvas extends GLCanvas
* <p>
* this data is avaiable after calling stopFpsCounter
*
- * @see GLAnimCanvas#resetFpsCounter
- * @see GLAnimCanvas#stopFpsCounter
- * @see GLAnimCanvas#getFps
- * @see GLAnimCanvas#getFpsDuration
- * @see GLAnimCanvas#getFpsFrames
- * @see GLAnimCanvas#setVerboseFps
+ * @see gl4java.awt.GLAnimCanvas#resetFpsCounter
+ * @see gl4java.awt.GLAnimCanvas#stopFpsCounter
+ * @see gl4java.awt.GLAnimCanvas#getFps
+ * @see gl4java.awt.GLAnimCanvas#getFpsDuration
+ * @see gl4java.awt.GLAnimCanvas#getFpsFrames
+ * @see gl4java.awt.GLAnimCanvas#setVerboseFps
*/
public long getFpsDuration()
{
@@ -624,12 +681,12 @@ public class GLAnimCanvas extends GLCanvas
* <p>
* this data is avaiable after calling stopFpsCounter
*
- * @see GLAnimCanvas#resetFpsCounter
- * @see GLAnimCanvas#stopFpsCounter
- * @see GLAnimCanvas#getFps
- * @see GLAnimCanvas#getFpsDuration
- * @see GLAnimCanvas#getFpsFrames
- * @see GLAnimCanvas#setVerboseFps
+ * @see gl4java.awt.GLAnimCanvas#resetFpsCounter
+ * @see gl4java.awt.GLAnimCanvas#stopFpsCounter
+ * @see gl4java.awt.GLAnimCanvas#getFps
+ * @see gl4java.awt.GLAnimCanvas#getFpsDuration
+ * @see gl4java.awt.GLAnimCanvas#getFpsFrames
+ * @see gl4java.awt.GLAnimCanvas#setVerboseFps
*/
public long getFpsFrames()
{
@@ -651,7 +708,7 @@ public class GLAnimCanvas extends GLCanvas
/**
* Just set the FramePerSecounds for Animation
*
- * @see GLAnimCanvas#getMaxFps
+ * @see gl4java.awt.GLAnimCanvas#getMaxFps
*/
public void setAnimateFps(double fps)
{
@@ -675,7 +732,7 @@ public class GLAnimCanvas extends GLCanvas
* this value is avaiable after the thread is started
* and the first frames are rendered !
*
- * @see GLAnimCanvas#setAnimateFps
+ * @see gl4java.awt.GLAnimCanvas#setAnimateFps
*/
public double getMaxFps()
{
diff --git a/gl4java/awt/GLCanvas.java b/gl4java/awt/GLCanvas.java
index 4a537f9..78775b6 100644
--- a/gl4java/awt/GLCanvas.java
+++ b/gl4java/awt/GLCanvas.java
@@ -62,7 +62,7 @@ import java.awt.event.*;
* </pre>
* <p>
*
- * @see GLAnimCanvas
+ * @see gl4java.awt.GLAnimCanvas
* @version 2.0, 21. April 1999
* @author Sven Goethel
*
@@ -87,8 +87,8 @@ public class GLCanvas extends Canvas
* This value is updated after a GLContext is created with the
* original updated value of GLContext !
*
- * @see GLCanvas#preInit
- * @see GLCanvas#paint
+ * @see gl4java.awt.GLCanvas#preInit
+ * @see gl4java.awt.GLCanvas#paint
*/
protected boolean doubleBuffer = true;
@@ -97,8 +97,8 @@ public class GLCanvas extends Canvas
* This value is updated after a GLContext is created with the
* original updated value of GLContext !
*
- * @see GLCanvas#preInit
- * @see GLCanvas#paint
+ * @see gl4java.awt.GLCanvas#preInit
+ * @see gl4java.awt.GLCanvas#paint
*/
protected int stencilBits = 0;
@@ -114,8 +114,8 @@ public class GLCanvas extends Canvas
* The output value, after the constructor returns,
* it is the summary of all accumulation bits of all components !
*
- * @see GLCanvas#preInit
- * @see GLCanvas#paint
+ * @see gl4java.awt.GLCanvas#preInit
+ * @see gl4java.awt.GLCanvas#paint
*/
protected int accumSize = 0;
@@ -124,8 +124,8 @@ public class GLCanvas extends Canvas
* This value is updated after a GLContext is created with the
* original updated value of GLContext !
*
- * @see GLCanvas#preInit
- * @see GLCanvas#paint
+ * @see gl4java.awt.GLCanvas#preInit
+ * @see gl4java.awt.GLCanvas#paint
*/
protected boolean stereoView = false;
@@ -134,8 +134,8 @@ public class GLCanvas extends Canvas
* This value is updated after a GLContext is created with the
* original updated value of GLContext !
*
- * @see GLCanvas#preInit
- * @see GLCanvas#paint
+ * @see gl4java.awt.GLCanvas#preInit
+ * @see gl4java.awt.GLCanvas#paint
*/
protected boolean rgba = true;
@@ -144,16 +144,16 @@ public class GLCanvas extends Canvas
* This value is updated after a GLContext is created with the
* original updated value of GLContext !
*
- * @see GLCanvas#preInit
- * @see GLCanvas#paint
+ * @see gl4java.awt.GLCanvas#preInit
+ * @see gl4java.awt.GLCanvas#paint
*/
protected boolean createOwnWindow = false;
/**
- * The context with witch display lists and textures will be shared.
+ * The context with wich display lists and textures will be shared.
*
- * @see GLCanvas#preInit
- * @see GLCanvas#paint
+ * @see gl4java.awt.GLCanvas#preInit
+ * @see gl4java.awt.GLCanvas#paint
*/
protected GLContext sharedGLContext;
@@ -240,7 +240,7 @@ public class GLCanvas extends Canvas
* @param g the Graphics Context
* @return void
*
- * @see GLCanvas#paint
+ * @see gl4java.awt.GLCanvas#paint
*/
public void update(Graphics g)
{
@@ -260,7 +260,7 @@ public class GLCanvas extends Canvas
*
* @return void
*
- * @see GLCanvas#paint
+ * @see gl4java.awt.GLCanvas#paint
*/
public final Window getTopLevelWindow()
{ return topLevelWindow; }
@@ -283,11 +283,11 @@ public class GLCanvas extends Canvas
* in your derivation.
*
* @see gl4java.GLContext#GLContext
- * @see GLCanvas#cvsIsInit
- * @see GLCanvas#sDisplay
- * @see GLCanvas#display
- * @see GLCanvas#preInit
- * @see GLCanvas#init
+ * @see gl4java.awt.GLCanvas#cvsIsInit
+ * @see gl4java.awt.GLCanvas#sDisplay
+ * @see gl4java.awt.GLCanvas#display
+ * @see gl4java.awt.GLCanvas#preInit
+ * @see gl4java.awt.GLCanvas#init
*/
public synchronized final void paint( Graphics g )
{
@@ -342,10 +342,6 @@ public class GLCanvas extends Canvas
if(glj!=null && glj.gljIsInit())
cvsInitialized=true;
}
- /*
- if( mustResize ) size = getSize();
- g.setClip(0, 0, size.width, size.height ) ;
- */
sDisplay();
}
@@ -358,12 +354,12 @@ public class GLCanvas extends Canvas
*
* @return void
*
- * @see GLCanvas#paint
- * @see GLCanvas#doubleBuffer
- * @see GLCanvas#stereoView
- * @see GLCanvas#rgba
- * @see GLCanvas#stencilBits
- * @see GLCanvas#accumSize
+ * @see gl4java.awt.GLCanvas#paint
+ * @see gl4java.awt.GLCanvas#doubleBuffer
+ * @see gl4java.awt.GLCanvas#stereoView
+ * @see gl4java.awt.GLCanvas#rgba
+ * @see gl4java.awt.GLCanvas#stencilBits
+ * @see gl4java.awt.GLCanvas#accumSize
*/
public void preInit()
{
@@ -378,7 +374,7 @@ public class GLCanvas extends Canvas
*
* @return void
*
- * @see GLCanvas#paint
+ * @see gl4java.awt.GLCanvas#paint
*/
public void init()
{
@@ -393,7 +389,7 @@ public class GLCanvas extends Canvas
*
* @return void
*
- * @see GLCanvas#cvsDispose
+ * @see gl4java.awt.GLCanvas#cvsDispose
*/
public void doCleanup()
{
@@ -406,8 +402,8 @@ public class GLCanvas extends Canvas
*
* @return boolean
*
- * @see GLCanvas#paint
- * @see GLCanvas#init
+ * @see gl4java.awt.GLCanvas#paint
+ * @see gl4java.awt.GLCanvas#init
*/
public boolean cvsIsInit()
{
@@ -433,8 +429,8 @@ public class GLCanvas extends Canvas
*
* @return void
*
- * @see GLCanvas#paint
- * @see GLCanvas#display
+ * @see gl4java.awt.GLCanvas#paint
+ * @see gl4java.awt.GLCanvas#display
*/
public synchronized final void sDisplay()
{
@@ -447,7 +443,7 @@ public class GLCanvas extends Canvas
if( mustResize )
{
- if( (ok = glj.gljMakeCurrent()) == true )
+ if( glj.gljMakeCurrent() == true )
{
size = getSize();
glj.gljResize( size.width, size.height ) ;
@@ -455,6 +451,7 @@ public class GLCanvas extends Canvas
mustResize = false;
invalidate();
repaint(100);
+ glj.gljFree();
}
}
if(ok)
@@ -471,6 +468,15 @@ public class GLCanvas extends Canvas
* (and sDisplay is called by paint !).
* The derived-class (Your Subclass) will redefine this, to draw it's own...
*
+ * <p>
+ *
+ * You MUST encapsulate your OpenGL call's within:
+ * <pre>
+ - glj.gljMakeCurrent()
+ YOUR OpenGL commands here !
+ - glj.gljFree()
+ * </pre>
+ *
* BE SURE, if you want to call 'display' by yourself
* (e.g. in the run method for animation)
* YOU HAVE TO CALL sDisplay !
@@ -480,8 +486,10 @@ public class GLCanvas extends Canvas
*
* @return void
*
- * @see GLCanvas#sDisplay
- * @see GLCanvas#paint
+ * @see gl4java.awt.GLCanvas#sDisplay
+ * @see gl4java.awt.GLCanvas#paint
+ * @see gl4java.GLContext#gljMakeCurrent
+ * @see gl4java.GLContext#gljSwap
*/
public void display()
{
@@ -508,8 +516,8 @@ public class GLCanvas extends Canvas
* @param height the new height
* @return void
*
- * @see GLCanvas#paint
- * @see GLCanvas#sDisplay
+ * @see gl4java.awt.GLCanvas#paint
+ * @see gl4java.awt.GLCanvas#sDisplay
*/
public void reshape( int width, int height )
{
@@ -533,8 +541,8 @@ public class GLCanvas extends Canvas
* @param e the element, which is resized
* @return void
*
- * @see GLCanvas#paint
- * @see GLCanvas#reshape
+ * @see gl4java.awt.GLCanvas#paint
+ * @see gl4java.awt.GLCanvas#reshape
*/
public void componentResized(ComponentEvent e)
{
@@ -644,7 +652,7 @@ public class GLCanvas extends Canvas
* This function calls gljDestroy of GLContext !
*
* @see gl4java.GLContext#gljDestroy
- * @see GLCanvas#doCleanup
+ * @see gl4java.awt.GLCanvas#doCleanup
*/
public void cvsDispose()
{
@@ -664,11 +672,13 @@ public class GLCanvas extends Canvas
context, so it all works out fine. */
try
{
- glj.gljFree();
- doCleanup();
- //locks and free's GLContext
glj.setEnabled(false);
+
+ setVisible(false);
+ doCleanup();
+
glj.gljDestroy();
+ glj = null;
needCvsDispose = false;
}
catch (Exception ex)
diff --git a/gl4java/jau/awt/WinHandleAccess.java b/gl4java/jau/awt/WinHandleAccess.java
index b6e8c87..1a491ce 100644
--- a/gl4java/jau/awt/WinHandleAccess.java
+++ b/gl4java/jau/awt/WinHandleAccess.java
@@ -14,8 +14,8 @@ import java.awt.Graphics;
*/
public interface WinHandleAccess
{
- public abstract int getWinHandle(Component component, Graphics g);
+ public abstract long getWinHandle(Component component, Graphics g);
- public abstract int getWinDepth(Component component, Graphics g);
+ public abstract int getWinDepth(Component component, Graphics g);
}
diff --git a/gl4java/jau/awt/macintosh/MacHandleAccess.java b/gl4java/jau/awt/macintosh/MacHandleAccess.java
index db1c3ef..853662d 100644
--- a/gl4java/jau/awt/macintosh/MacHandleAccess.java
+++ b/gl4java/jau/awt/macintosh/MacHandleAccess.java
@@ -29,8 +29,8 @@ public class MacHandleAccess implements gl4java.jau.awt.WinHandleAccess
protected DrawingSurface ds;
protected DrawingSurfaceInfo dsi;
protected MacDrawingSurface mds;
- protected int window,
- depth;
+ protected long window;
+ protected int depth;
protected void achieveData(java.awt.Component c, java.awt.Graphics g)
@@ -55,7 +55,7 @@ public class MacHandleAccess implements gl4java.jau.awt.WinHandleAccess
{
dsi.lock();
- window = mds.getPort();
+ window = (long) mds.getPort();
depth = c.getColorModel().getPixelSize();
dsi.unlock();
@@ -71,7 +71,7 @@ public class MacHandleAccess implements gl4java.jau.awt.WinHandleAccess
*
* gets some structure for windows, and drawable on Mac
*/
- public int getWinHandle(java.awt.Component c, java.awt.Graphics g)
+ public long getWinHandle(java.awt.Component c, java.awt.Graphics g)
{
achieveData(c, g);
return window;
diff --git a/gl4java/jau/awt/motif/X11HandleAccess.java b/gl4java/jau/awt/motif/X11HandleAccess.java
index f07e111..8d6b27e 100644
--- a/gl4java/jau/awt/motif/X11HandleAccess.java
+++ b/gl4java/jau/awt/motif/X11HandleAccess.java
@@ -27,7 +27,8 @@ public class X11HandleAccess
{
protected DrawingSurfaceInfo dsi;
protected X11DrawingSurface wds;
- protected int window, depth;
+ protected long window;
+ protected int depth;
protected void achieveData(java.awt.Component c, java.awt.Graphics g)
{
@@ -46,7 +47,7 @@ public class X11HandleAccess
if(wds!=null)
{
dsi.lock();
- window = wds.getDrawable();
+ window = (long) wds.getDrawable();
depth = wds.getDepth();
/*
@@ -67,7 +68,7 @@ public class X11HandleAccess
*
* gets some structure for windows, and drawable on X11
*/
- public int getWinHandle(java.awt.Component c, java.awt.Graphics g)
+ public long getWinHandle(java.awt.Component c, java.awt.Graphics g)
{
achieveData(c, g);
return window;
diff --git a/gl4java/jau/awt/windows/MSWin32HandleAccess.java b/gl4java/jau/awt/windows/MSWin32HandleAccess.java
index 1dd4d93..76809f3 100644
--- a/gl4java/jau/awt/windows/MSWin32HandleAccess.java
+++ b/gl4java/jau/awt/windows/MSWin32HandleAccess.java
@@ -24,7 +24,8 @@ import com.ms.awt.GraphicsX;
public class MSWin32HandleAccess
implements gl4java.jau.awt.WinHandleAccess
{
- protected int window, depth;
+ protected long window;
+ protected int depth;
/**
* @dll.import("USER32",auto)
@@ -33,7 +34,7 @@ public class MSWin32HandleAccess
protected void achieveData(java.awt.Component c, java.awt.Graphics g)
{
- window = WindowFromDC(((GraphicsX)g).gdc.pGetDC());
+ window = (long) WindowFromDC(((GraphicsX)g).gdc.pGetDC());
depth = c.getColorModel().getPixelSize();
}
@@ -41,7 +42,7 @@ public class MSWin32HandleAccess
*
* get the window handle
*/
- public int getWinHandle(java.awt.Component c, java.awt.Graphics g)
+ public long getWinHandle(java.awt.Component c, java.awt.Graphics g)
{
achieveData(c, g);
return window;
diff --git a/gl4java/jau/awt/windows/Win32HandleAccess.java b/gl4java/jau/awt/windows/Win32HandleAccess.java
index 38b5c93..d4a698f 100644
--- a/gl4java/jau/awt/windows/Win32HandleAccess.java
+++ b/gl4java/jau/awt/windows/Win32HandleAccess.java
@@ -28,7 +28,8 @@ public class Win32HandleAccess
protected DrawingSurfaceInfo dsi;
protected Win32DrawingSurface wds;
- protected int window, depth;
+ protected long window;
+ protected int depth;
protected void achieveData(java.awt.Component c, java.awt.Graphics g)
{
@@ -47,7 +48,7 @@ public class Win32HandleAccess
if(wds!=null)
{
dsi.lock();
- window = wds.getHDC();
+ window = (long) wds.getHDC();
depth = wds.getDepth();
/*
System.out.println("wds ="+wds);
@@ -65,7 +66,7 @@ public class Win32HandleAccess
*
* gets some structure for windows, and drawable on Win32
*/
- public int getWinHandle(java.awt.Component c, java.awt.Graphics g)
+ public long getWinHandle(java.awt.Component c, java.awt.Graphics g)
{
achieveData(c, g);
return window;
diff --git a/gl4java/swing/GLAnimJPanel.java b/gl4java/swing/GLAnimJPanel.java
index e9bdbdf..a7af76a 100644
--- a/gl4java/swing/GLAnimJPanel.java
+++ b/gl4java/swing/GLAnimJPanel.java
@@ -102,7 +102,7 @@ import java.lang.Math;
<a href="GLAnimJPanel.html#ReInit()">ReInit - ReInitialisation after stop for setSuspended(false)</a>
* </pre>
*
- * @see GLCanvas
+ * @see gl4java.awt.GLCanvas
* @version 2.0, 21. April 1999
* @author Sven Goethel
*
@@ -116,7 +116,7 @@ public class GLAnimJPanel extends GLJPanel
*
* A little GUI is supported !
*
- * @see GLAnimJPanel#run
+ * @see gl4java.swing.GLAnimJPanel#run
*/
protected double FramesPerSec=20;
protected long mSecPerFrame=0;
@@ -129,16 +129,16 @@ public class GLAnimJPanel extends GLJPanel
/**
* The thread for referencing Thread (Animation)
*
- * @see GLAnimJPanel#stop
- * @see GLAnimJPanel#start
- * @see GLAnimJPanel#run
+ * @see gl4java.swing.GLAnimJPanel#stop
+ * @see gl4java.swing.GLAnimJPanel#start
+ * @see gl4java.swing.GLAnimJPanel#run
*/
protected Thread killme = null;
/**
* Instead of using suspend (JAVA2)
*
- * @see GLAnimJPanel#run
+ * @see gl4java.swing.GLAnimJPanel#run
*/
protected boolean threadSuspended = false;
@@ -222,7 +222,7 @@ public class GLAnimJPanel extends GLJPanel
*
* Uses the default GLFunc and GLUFunc implementation !
*
- * @see GLCanvas#GLCanvas
+ * @see gl4java.awt.GLCanvas#GLCanvas
*
*/
public GLAnimJPanel( )
@@ -264,11 +264,11 @@ public class GLAnimJPanel extends GLJPanel
* <p>
* To restart the thread, just call setSuspended(false)
*
- * @see GLAnimJPanel#shallWeRender
- * @see GLAnimJPanel#run
- * @see GLAnimJPanel#setSuspended
- * @see GLCanvas#sDisplay
- * @see GLCanvas#paint
+ * @see gl4java.swing.GLAnimJPanel#shallWeRender
+ * @see gl4java.swing.GLAnimJPanel#run
+ * @see gl4java.swing.GLAnimJPanel#setSuspended
+ * @see gl4java.awt.GLAnimCanvas#sDisplay
+ * @see gl4java.awt.GLAnimCanvas#paint
*/
public void display()
{
@@ -282,7 +282,7 @@ public class GLAnimJPanel extends GLJPanel
* ReInit should be overwritten by you,
* to enter your re-initialisation within setSuspended(false)
*
- * @see GLAnimJPanel#setSuspended
+ * @see gl4java.swing.GLAnimJPanel#setSuspended
*/
public void ReInit()
{
@@ -305,8 +305,8 @@ public class GLAnimJPanel extends GLJPanel
* <p>
*
* @param b if true, uses repaint (default), otherwise directly sDisplay
- * @see GLCanvas#sDisplay
- * @see GLAnimJPanel#setUseFpsSleep
+ * @see gl4java.awt.GLAnimCanvas#sDisplay
+ * @see gl4java.swing.GLAnimJPanel#setUseFpsSleep
*/
public void setUseRepaint(boolean b)
{
@@ -322,8 +322,8 @@ public class GLAnimJPanel extends GLJPanel
* <p>
*
* @param b if true, uses Fps sleeping, else not !
- * @see GLCanvas#sDisplay
- * @see GLAnimJPanel#setUseRepaint
+ * @see gl4java.awt.GLAnimCanvas#sDisplay
+ * @see gl4java.swing.GLAnimJPanel#setUseRepaint
*/
public void setUseFpsSleep(boolean b)
{
@@ -369,8 +369,8 @@ public class GLAnimJPanel extends GLJPanel
* If shallWeRender is false,
* this thread will suspend !
*
- * @see GLAnimJPanel#display
- * @see GLAnimJPanel#run
+ * @see gl4java.swing.GLAnimJPanel#display
+ * @see gl4java.swing.GLAnimJPanel#run
*/
protected boolean shallWeRender = true;
@@ -383,9 +383,8 @@ public class GLAnimJPanel extends GLJPanel
* The running loop for animations
* which initiates the call of display
*
- * @see GLAnimJPanel#shallWeRender
- * @see GLAnimJPanel#display
- * @see GLAnimJPanel#diplay
+ * @see gl4java.swing.GLAnimJPanel#shallWeRender
+ * @see gl4java.swing.GLAnimJPanel#display
*/
public void run()
{
@@ -456,8 +455,8 @@ public class GLAnimJPanel extends GLJPanel
* @param suspend if true the thread will be suspended,
* if false, the thread will be (re)started
*
- * @see GLAnimJPanel#isAlive
- * @see GLAnimJPanel#start
+ * @see gl4java.swing.GLAnimJPanel#isAlive
+ * @see gl4java.swing.GLAnimJPanel#start
*/
public void setSuspended(boolean suspend)
{
@@ -476,8 +475,8 @@ public class GLAnimJPanel extends GLJPanel
* @param reInit if true the ReInit will be called additionally,
* where the user can set additional initialisations
*
- * @see GLAnimJPanel#isAlive
- * @see GLAnimJPanel#start
+ * @see gl4java.swing.GLAnimJPanel#isAlive
+ * @see gl4java.swing.GLAnimJPanel#start
*/
public synchronized void setSuspended(boolean suspend, boolean reInit)
{
@@ -502,10 +501,10 @@ public class GLAnimJPanel extends GLJPanel
/**
* is the thread alive, means is started and not died ?
*
- * @see GLAnimJPanel#run
- * @see GLAnimJPanel#setSuspended
- * @see GLAnimJPanel#start
- * @see GLAnimJPanel#stop
+ * @see gl4java.swing.GLAnimJPanel#run
+ * @see gl4java.swing.GLAnimJPanel#setSuspended
+ * @see gl4java.swing.GLAnimJPanel#start
+ * @see gl4java.swing.GLAnimJPanel#stop
*/
public boolean isAlive()
{
@@ -517,10 +516,10 @@ public class GLAnimJPanel extends GLJPanel
* is the thread suspended, means is started but waiting,
* or not alive (ok :-| - but it is practical)
*
- * @see GLAnimJPanel#run
- * @see GLAnimJPanel#setSuspended
- * @see GLAnimJPanel#start
- * @see GLAnimJPanel#stop
+ * @see gl4java.swing.GLAnimJPanel#run
+ * @see gl4java.swing.GLAnimJPanel#setSuspended
+ * @see gl4java.swing.GLAnimJPanel#start
+ * @see gl4java.swing.GLAnimJPanel#stop
*/
public boolean isSuspended()
{
@@ -541,14 +540,14 @@ public class GLAnimJPanel extends GLJPanel
* this function is called automatically by
* start and setSuspended
*
- * @see GLAnimJPanel#start
- * @see GLAnimJPanel#setSuspended
- * @see GLAnimJPanel#resetFpsCounter
- * @see GLAnimJPanel#stopFpsCounter
- * @see GLAnimJPanel#getFps
- * @see GLAnimJPanel#getFpsDuration
- * @see GLAnimJPanel#getFpsFrames
- * @see GLAnimJPanel#setVerboseFps
+ * @see gl4java.swing.GLAnimJPanel#start
+ * @see gl4java.swing.GLAnimJPanel#setSuspended
+ * @see gl4java.swing.GLAnimJPanel#resetFpsCounter
+ * @see gl4java.swing.GLAnimJPanel#stopFpsCounter
+ * @see gl4java.swing.GLAnimJPanel#getFps
+ * @see gl4java.swing.GLAnimJPanel#getFpsDuration
+ * @see gl4java.swing.GLAnimJPanel#getFpsFrames
+ * @see gl4java.swing.GLAnimJPanel#setVerboseFps
*/
public void resetFpsCounter()
{
@@ -569,14 +568,14 @@ public class GLAnimJPanel extends GLJPanel
* All data's are print out on System.out
* if verboseFps is set !
*
- * @see GLAnimJPanel#run
- * @see GLAnimJPanel#shallWeRender
- * @see GLAnimJPanel#resetFpsCounter
- * @see GLAnimJPanel#stopFpsCounter
- * @see GLAnimJPanel#getFps
- * @see GLAnimJPanel#getFpsDuration
- * @see GLAnimJPanel#getFpsFrames
- * @see GLAnimJPanel#setVerboseFps
+ * @see gl4java.swing.GLAnimJPanel#run
+ * @see gl4java.swing.GLAnimJPanel#shallWeRender
+ * @see gl4java.swing.GLAnimJPanel#resetFpsCounter
+ * @see gl4java.swing.GLAnimJPanel#stopFpsCounter
+ * @see gl4java.swing.GLAnimJPanel#getFps
+ * @see gl4java.swing.GLAnimJPanel#getFpsDuration
+ * @see gl4java.swing.GLAnimJPanel#getFpsFrames
+ * @see gl4java.swing.GLAnimJPanel#setVerboseFps
*/
public void stopFpsCounter()
{
@@ -605,14 +604,14 @@ public class GLAnimJPanel extends GLJPanel
* <p>
* verboseFps is set to true by default !
*
- * @see GLAnimJPanel#run
- * @see GLAnimJPanel#shallWeRender
- * @see GLAnimJPanel#resetFpsCounter
- * @see GLAnimJPanel#stopFpsCounter
- * @see GLAnimJPanel#getFps
- * @see GLAnimJPanel#getFpsDuration
- * @see GLAnimJPanel#getFpsFrames
- * @see GLAnimJPanel#setVerboseFps
+ * @see gl4java.swing.GLAnimJPanel#run
+ * @see gl4java.swing.GLAnimJPanel#shallWeRender
+ * @see gl4java.swing.GLAnimJPanel#resetFpsCounter
+ * @see gl4java.swing.GLAnimJPanel#stopFpsCounter
+ * @see gl4java.swing.GLAnimJPanel#getFps
+ * @see gl4java.swing.GLAnimJPanel#getFpsDuration
+ * @see gl4java.swing.GLAnimJPanel#getFpsFrames
+ * @see gl4java.swing.GLAnimJPanel#setVerboseFps
*/
public void setVerboseFps(boolean v)
{
@@ -624,12 +623,12 @@ public class GLAnimJPanel extends GLJPanel
* <p>
* this data is avaiable after calling stopFpsCounter
*
- * @see GLAnimJPanel#resetFpsCounter
- * @see GLAnimJPanel#stopFpsCounter
- * @see GLAnimJPanel#getFps
- * @see GLAnimJPanel#getFpsDuration
- * @see GLAnimJPanel#getFpsFrames
- * @see GLAnimJPanel#setVerboseFps
+ * @see gl4java.swing.GLAnimJPanel#resetFpsCounter
+ * @see gl4java.swing.GLAnimJPanel#stopFpsCounter
+ * @see gl4java.swing.GLAnimJPanel#getFps
+ * @see gl4java.swing.GLAnimJPanel#getFpsDuration
+ * @see gl4java.swing.GLAnimJPanel#getFpsFrames
+ * @see gl4java.swing.GLAnimJPanel#setVerboseFps
*/
public double getFps()
{
@@ -641,12 +640,12 @@ public class GLAnimJPanel extends GLJPanel
* <p>
* this data is avaiable after calling stopFpsCounter
*
- * @see GLAnimJPanel#resetFpsCounter
- * @see GLAnimJPanel#stopFpsCounter
- * @see GLAnimJPanel#getFps
- * @see GLAnimJPanel#getFpsDuration
- * @see GLAnimJPanel#getFpsFrames
- * @see GLAnimJPanel#setVerboseFps
+ * @see gl4java.swing.GLAnimJPanel#resetFpsCounter
+ * @see gl4java.swing.GLAnimJPanel#stopFpsCounter
+ * @see gl4java.swing.GLAnimJPanel#getFps
+ * @see gl4java.swing.GLAnimJPanel#getFpsDuration
+ * @see gl4java.swing.GLAnimJPanel#getFpsFrames
+ * @see gl4java.swing.GLAnimJPanel#setVerboseFps
*/
public long getFpsDuration()
{
@@ -658,12 +657,12 @@ public class GLAnimJPanel extends GLJPanel
* <p>
* this data is avaiable after calling stopFpsCounter
*
- * @see GLAnimJPanel#resetFpsCounter
- * @see GLAnimJPanel#stopFpsCounter
- * @see GLAnimJPanel#getFps
- * @see GLAnimJPanel#getFpsDuration
- * @see GLAnimJPanel#getFpsFrames
- * @see GLAnimJPanel#setVerboseFps
+ * @see gl4java.swing.GLAnimJPanel#resetFpsCounter
+ * @see gl4java.swing.GLAnimJPanel#stopFpsCounter
+ * @see gl4java.swing.GLAnimJPanel#getFps
+ * @see gl4java.swing.GLAnimJPanel#getFpsDuration
+ * @see gl4java.swing.GLAnimJPanel#getFpsFrames
+ * @see gl4java.swing.GLAnimJPanel#setVerboseFps
*/
public long getFpsFrames()
{
@@ -685,7 +684,7 @@ public class GLAnimJPanel extends GLJPanel
/**
* Just set the FramePerSecounds for Animation
*
- * @see GLAnimJPanel#getMaxFps
+ * @see gl4java.swing.GLAnimJPanel#getMaxFps
*/
public void setAnimateFps(double fps)
{
@@ -709,7 +708,7 @@ public class GLAnimJPanel extends GLJPanel
* this value is avaiable after the thread is started
* and the first frames are rendered !
*
- * @see GLAnimJPanel#setAnimateFps
+ * @see gl4java.swing.GLAnimJPanel#setAnimateFps
*/
public double getMaxFps()
{
diff --git a/gl4java/swing/GLJPanel.java b/gl4java/swing/GLJPanel.java
index 21beb39..1e23110 100644
--- a/gl4java/swing/GLJPanel.java
+++ b/gl4java/swing/GLJPanel.java
@@ -59,7 +59,9 @@ import javax.swing.*;
* </pre>
* <p>
*
- * @see GLAnimJPanel
+ * @see gl4java.swing.GLAnimJPanel
+ * @see gl4java.awt.GLCanvas
+ *
* @version 2.0, 21. April 1999
* @author Sven Goethel
*
@@ -83,8 +85,8 @@ public class GLJPanel extends JPanel
* This value is updated after a GLContext is created with the
* original updated value of GLContext !
*
- * @see GLJPanel#preInit
- * @see GLJPanel#paint
+ * @see gl4java.swing.GLJPanel#preInit
+ * @see gl4java.swing.GLJPanel#paint
*/
protected int stencilBits = 0;
@@ -93,8 +95,8 @@ public class GLJPanel extends JPanel
* This value is updated after a GLContext is created with the
* original updated value of GLContext !
*
- * @see GLJPanel#preInit
- * @see GLJPanel#paint
+ * @see gl4java.swing.GLJPanel#preInit
+ * @see gl4java.swing.GLJPanel#paint
*/
protected int accumSize = 0;
@@ -103,8 +105,8 @@ public class GLJPanel extends JPanel
* This value is updated after a GLContext is created with the
* original updated value of GLContext !
*
- * @see GLJPanel#preInit
- * @see GLJPanel#paint
+ * @see gl4java.swing.GLJPanel#preInit
+ * @see gl4java.swing.GLJPanel#paint
*/
protected boolean stereoView = false;
@@ -113,32 +115,32 @@ public class GLJPanel extends JPanel
* This value is updated after a GLContext is created with the
* original updated value of GLContext !
*
- * @see GLJPanel#preInit
- * @see GLJPanel#paint
+ * @see gl4java.swing.GLJPanel#preInit
+ * @see gl4java.swing.GLJPanel#paint
*/
protected boolean rgba = true;
/**
* The context with witch display lists and textures will be shared.
*
- * @see GLJPanel#preInit
- * @see GLJPanel#paint
+ * @see gl4java.swing.GLJPanel#preInit
+ * @see gl4java.swing.GLJPanel#paint
*/
protected GLContext sharedGLContext;
/**
* The data to hold the offscreen pixels on the java side !
*
- * @see GLJPanel#offImagePixels
- * @see GLJPanel#paint
+ * @see gl4java.swing.GLJPanel#offImagePixels
+ * @see gl4java.swing.GLJPanel#paint
*/
protected BufferedImage offImage = null;
/**
* The data to hold the offscreen pixels on the GL side !
*
- * @see GLJPanel#offImage
- * @see GLJPanel#paint
+ * @see gl4java.swing.GLJPanel#offImage
+ * @see gl4java.swing.GLJPanel#paint
*/
protected byte[] offImagePixels = null;
@@ -149,9 +151,9 @@ public class GLJPanel extends JPanel
* the offscreen pixmap is used in this size,
* not in the components-size (-> faster if smaller)
*
- * @see GLJPanel#paint
- * @see GLJPanel#setOffScreenSize
- * @see GLJPanel#getOffScreenSize
+ * @see gl4java.swing.GLJPanel#paint
+ * @see gl4java.swing.GLJPanel#setOffScreenSize
+ * @see gl4java.swing.GLJPanel#getOffScreenSize
*/
protected Dimension offScrnSize = null;
protected boolean customOffScrnSize=false;
@@ -269,7 +271,7 @@ public class GLJPanel extends JPanel
*
* @return void
*
- * @see GLJPanel#paint
+ * @see gl4java.swing.GLJPanel#paint
*/
public final Window getTopLevelWindow()
{ return topLevelWindow; }
@@ -281,8 +283,8 @@ public class GLJPanel extends JPanel
* the offscreen pixmap is used in this size,
* not in the components-size (-> faster if smaller)
*
- * @see GLJPanel#offScrnSize
- * @see GLJPanel#setOffScreenSize
+ * @see gl4java.swing.GLJPanel#offScrnSize
+ * @see gl4java.swing.GLJPanel#setOffScreenSize
*/
public Dimension getOffScreenSize()
{ return offScrnSize; }
@@ -294,8 +296,8 @@ public class GLJPanel extends JPanel
* the offscreen pixmap is used in this size,
* not in the components-size (-> faster if smaller)
*
- * @see GLJPanel#offScrnSize
- * @see GLJPanel#getOffScreenSize
+ * @see gl4java.swing.GLJPanel#offScrnSize
+ * @see gl4java.swing.GLJPanel#getOffScreenSize
*/
public void setOffScreenSize(Dimension size)
{
@@ -327,11 +329,11 @@ public class GLJPanel extends JPanel
* in your derivation.
*
* @see gl4java.GLContext#GLContext
- * @see GLJPanel#cvsIsInit
- * @see GLJPanel#sDisplay
- * @see GLJPanel#display
- * @see GLJPanel#preInit
- * @see GLJPanel#init
+ * @see gl4java.swing.GLJPanel#cvsIsInit
+ * @see gl4java.swing.GLJPanel#sDisplay
+ * @see gl4java.swing.GLJPanel#display
+ * @see gl4java.swing.GLJPanel#preInit
+ * @see gl4java.swing.GLJPanel#init
*/
public synchronized final void paintComponent(Graphics g)
{
@@ -430,8 +432,8 @@ public class GLJPanel extends JPanel
*
* @return void
*
- * @see GLJPanel#paint
- * @see GLJPanel#display
+ * @see gl4java.swing.GLJPanel#paint
+ * @see gl4java.swing.GLJPanel#display
*/
public synchronized final void sDisplay()
{
@@ -562,8 +564,8 @@ public class GLJPanel extends JPanel
*
* @return void
*
- * @see GLJPanel#sDisplay
- * @see GLJPanel#paint
+ * @see gl4java.swing.GLJPanel#sDisplay
+ * @see gl4java.swing.GLJPanel#paint
*/
public void display()
{
@@ -578,12 +580,11 @@ public class GLJPanel extends JPanel
*
* @return void
*
- * @see GLJPanel#paint
- * @see GLJPanel#doubleBuffer
- * @see GLJPanel#stereoView
- * @see GLJPanel#rgba
- * @see GLJPanel#stencilBits
- * @see GLJPanel#accumSize
+ * @see gl4java.swing.GLJPanel#paint
+ * @see gl4java.swing.GLJPanel#stereoView
+ * @see gl4java.swing.GLJPanel#rgba
+ * @see gl4java.swing.GLJPanel#stencilBits
+ * @see gl4java.swing.GLJPanel#accumSize
*/
public void preInit()
{
@@ -598,7 +599,7 @@ public class GLJPanel extends JPanel
*
* @return void
*
- * @see GLJPanel#paint
+ * @see gl4java.swing.GLJPanel#paint
*/
public void init()
{
@@ -613,7 +614,7 @@ public class GLJPanel extends JPanel
*
* @return void
*
- * @see GLJPanel#cvsDispose
+ * @see gl4java.swing.GLJPanel#cvsDispose
*/
public void doCleanup()
{
@@ -626,8 +627,8 @@ public class GLJPanel extends JPanel
*
* @return boolean
*
- * @see GLJPanel#paint
- * @see GLJPanel#init
+ * @see gl4java.swing.GLJPanel#paint
+ * @see gl4java.swing.GLJPanel#init
*/
public boolean cvsIsInit()
{
@@ -662,8 +663,8 @@ public class GLJPanel extends JPanel
* @param height the new height
* @return void
*
- * @see GLJPanel#paint
- * @see GLJPanel#sDisplay
+ * @see gl4java.swing.GLJPanel#paint
+ * @see gl4java.swing.GLJPanel#sDisplay
*/
public void reshape( int width, int height )
{
@@ -689,8 +690,8 @@ public class GLJPanel extends JPanel
* @param e the element, which is resized
* @return void
*
- * @see GLJPanel#paint
- * @see GLJPanel#reshape
+ * @see gl4java.swing.GLJPanel#paint
+ * @see gl4java.swing.GLJPanel#reshape
*/
public void componentResized(ComponentEvent e)
{
@@ -807,7 +808,7 @@ public class GLJPanel extends JPanel
* This function calls gljDestroy of GLContext !
*
* @see gl4java.GLContext#gljDestroy
- * @see GLJPanel#doCleanup
+ * @see gl4java.swing.GLJPanel#doCleanup
*/
public void cvsDispose()
{
diff --git a/gl4java/system/GljMSJDirect.java b/gl4java/system/GljMSJDirect.java
index 125d5c0..ef5986c 100644
--- a/gl4java/system/GljMSJDirect.java
+++ b/gl4java/system/GljMSJDirect.java
@@ -43,7 +43,7 @@ public class GljMSJDirect extends Object
*/
private static native void OGLWindowMsgPumpJDirect();
- public static final int createOGLWindowNative(int hwndParent,
+ public static final long createOGLWindowNative(long hwndParent,
int x, int y,
int width,
int height)
@@ -52,26 +52,26 @@ public class GljMSJDirect extends Object
/**
* @dll.import("GL4JavaGljMSJDirect", auto)
*/
- private static native int createOGLWindowNativeJDirect(int hwndParent,
+ private static native long createOGLWindowNativeJDirect(long hwndParent,
int x, int y,
int width,
int height);
- public static final void destroyOGLWindowNative(int hdc)
+ public static final void destroyOGLWindowNative(long hdc)
{ destroyOGLWindowNativeJDirect(hdc); }
/**
* @dll.import("GL4JavaGljMSJDirect")
*/
- private static native void destroyOGLWindowNativeJDirect(int hdc);
+ private static native void destroyOGLWindowNativeJDirect(long hdc);
- public static final void moveOGLWindowNative(int hdc, int x, int y, int width, int height)
+ public static final void moveOGLWindowNative(long hdc, int x, int y, int width, int height)
{ moveOGLWindowNativeJDirect(hdc, x, y, width, height); }
/**
* @dll.import("GL4JavaGljMSJDirect")
*/
- private static native void moveOGLWindowNativeJDirect(int hdc, int x, int y, int width, int height);
+ private static native void moveOGLWindowNativeJDirect(long hdc, int x, int y, int width, int height);
}
diff --git a/gl4java/utils/Test.java b/gl4java/utils/Test.java
index addc706..a430de5 100644
--- a/gl4java/utils/Test.java
+++ b/gl4java/utils/Test.java
@@ -55,7 +55,7 @@ public class Test
Dimension ps = glSAnimApplet.getPreferredSize();
f.setBounds(-100,-100,99,99);
f.setVisible(true);
- f.setVisible(false);
+ //f.setVisible(false);
Insets i = f.getInsets();
f.setBounds(0,0,
ps.width+i.left+i.right,
diff --git a/gl4java/utils/glut/GLUTFuncLightImpl.java b/gl4java/utils/glut/GLUTFuncLightImpl.java
index 0d75311..6f546aa 100644
--- a/gl4java/utils/glut/GLUTFuncLightImpl.java
+++ b/gl4java/utils/glut/GLUTFuncLightImpl.java
@@ -267,7 +267,7 @@ implements GLUTFunc, GLEnum, GLUEnum
protected GLFunc gl = null;
protected GLUFunc glu = null;
- protected int quadObj=0;
+ protected long quadObj=0;
protected final void initQuadObj()
{