aboutsummaryrefslogtreecommitdiffstats
path: root/gl4java/awt
diff options
context:
space:
mode:
Diffstat (limited to 'gl4java/awt')
-rw-r--r--gl4java/awt/GLAnimCanvas.java229
-rw-r--r--gl4java/awt/GLCanvas.java110
2 files changed, 203 insertions, 136 deletions
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)