private void initgl() {
		final Thread caller = Thread.currentThread();
		addGLEventListener(new GLEventListener() {
			public void display(GLAutoDrawable d) {
				GL gl = d.getGL();
				if (inited && rdr)
					redraw(gl);
				TexGL.disposeall(gl);
			}

			public void init(GLAutoDrawable d) {
				GL gl = d.getGL();
				if (caller.getThreadGroup() instanceof haven.error.ErrorHandler) {
					haven.error.ErrorHandler h = (haven.error.ErrorHandler) caller
							.getThreadGroup();
					h.lsetprop("gl.vendor", gl.glGetString(GL.GL_VENDOR));
					h.lsetprop("gl.version", gl.glGetString(GL.GL_VERSION));
					h.lsetprop("gl.renderer", gl.glGetString(GL.GL_RENDERER));
					h.lsetprop("gl.exts", Arrays.asList(gl.glGetString(
							GL.GL_EXTENSIONS).split(" ")));
					h.lsetprop("gl.caps", d.getChosenGLCapabilities()
							.toString());
				}
				gl.glColor3f(1, 1, 1);
				gl.glPointSize(4);
				gl.setSwapInterval(1);
				gl.glEnable(GL.GL_BLEND);
				// gl.glEnable(GL.GL_LINE_SMOOTH);
				gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA);
				GOut.checkerr(gl);
			}

			public void reshape(GLAutoDrawable d, int x, int y, int w, int h) {
			}

			public void displayChanged(GLAutoDrawable d, boolean cp1,
					boolean cp2) {
			}
		});
	}