What does the following error mean?
Exception in thread “AWT-EventQueue-0” net.java.games.jogl.GLException: Surface
already locked
at net.java.games.jogl.impl.windows.WindowsOnscreenGLContext.lockSurface
(WindowsOnscreenGLContext.java:165)
at net.java.games.jogl.impl.windows.WindowsOnscreenGLContext.makeCurrent
(WindowsOnscreenGLContext.java:126)
at net.java.games.jogl.impl.GLContext.invokeGL(GLContext.java:246)
at net.java.games.jogl.impl.windows.WindowsOnscreenGLContext.invokeGL(Wi
ndowsOnscreenGLContext.java:79)
at net.java.games.jogl.GLCanvas.maybeDoSingleThreadedWorkaround(GLCanvas
.java:236)
at net.java.games.jogl.GLCanvas.display(GLCanvas.java:77)
at gov.nasa.jsc.renderer.Renderer.clearScreen(Renderer.java:924)
at gov.nasa.jsc.renderer.Renderer.init(Renderer.java:139)
at net.java.games.jogl.impl.GLDrawableHelper.init(GLDrawableHelper.java:
68)
at net.java.games.jogl.GLCanvas$InitAction.run(GLCanvas.java:242)
at net.java.games.jogl.impl.windows.WindowsGLContext.makeCurrent(Windows
GLContext.java:171)
at net.java.games.jogl.impl.windows.WindowsOnscreenGLContext.makeCurrent
(WindowsOnscreenGLContext.java:129)
at net.java.games.jogl.impl.GLContext.invokeGL(GLContext.java:246)
at net.java.games.jogl.impl.windows.WindowsOnscreenGLContext.invokeGL(Wi
ndowsOnscreenGLContext.java:76)
at net.java.games.jogl.GLCanvas.maybeDoSingleThreadedWorkaround(GLCanvas
.java:236)
at net.java.games.jogl.GLCanvas.reshape(GLCanvas.java:133)
at java.awt.Component.setBounds(Unknown Source)
at java.awt.BorderLayout.layoutContainer(Unknown Source)
at java.awt.Container.layout(Unknown Source)
at java.awt.Container.doLayout(Unknown Source)
at java.awt.Container.validateTree(Unknown Source)
I get that error when I invoke the clearScreen() method as is below. I have the gldrawable as a class member so that I can access it and make calls from outside this class when I click buttons to clear my screen.
public class MyRenderer implements GLEventListener, MouseListener, MouseMotionListener, KeyListener
{
private GLDrawable gldrawable = null;
public void init(GLDrawable drawable) {
GL gl = drawable.getGL();
GLU glu = drawable.getGLU();
this.gldrawable = drawable;
...
}
public void display(GLDrawable drawable) {
GL gl = drawable.getGL();
GLU glu = drawable.getGLU();
this.gldrawable = drawable;
...
}
// I have a button that calls this to clear the screen.
public void clearScreen() {
//GL gl = gldrawable.getGL();
gldrawable.getGL().glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
gldrawable.getGL().glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
// tried this, got no exceptions, but didn't clear the screen.
//gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
//gl.glClearDepth(1.0);
//gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
//gl.glMatrixMode(GL.GL_MODELVIEW);
//gl.glLoadIdentity();
this.gldrawable.display();
return;
}
}