diff options
Diffstat (limited to 'src')
3 files changed, 44 insertions, 11 deletions
diff --git a/src/newt/classes/com/jogamp/newt/awt/applet/JOGLNewtAppletBase.java b/src/newt/classes/com/jogamp/newt/awt/applet/JOGLNewtAppletBase.java index 97142b32b..9d3b8185f 100755 --- a/src/newt/classes/com/jogamp/newt/awt/applet/JOGLNewtAppletBase.java +++ b/src/newt/classes/com/jogamp/newt/awt/applet/JOGLNewtAppletBase.java @@ -1,6 +1,8 @@ package com.jogamp.newt.awt.applet; import java.lang.reflect.*; +import java.security.AccessController; +import java.security.PrivilegedAction; import javax.media.nativewindow.NativeWindow; import javax.media.opengl.*; @@ -56,11 +58,22 @@ public class JOGLNewtAppletBase extends WindowAdapter implements KeyListener, Mo return def; } - public static GLEventListener createInstance(String clazzName) { + public static GLEventListener createInstance(final String clazzName) { Object instance = null; try { - Class<?> clazz = Class.forName(clazzName); + final Class<?> clazz = AccessController.doPrivileged(new PrivilegedAction<Class<?>>() { + public Class<?> run() { + final ClassLoader cl = Thread.currentThread().getContextClassLoader(); + Class<?> clazz = null; + try { + clazz = Class.forName(clazzName, false, cl); + } catch (Throwable t) { + t.printStackTrace(); + } + return clazz; + } + }); instance = clazz.newInstance(); } catch (Throwable t) { t.printStackTrace(); @@ -97,9 +110,13 @@ public class JOGLNewtAppletBase extends WindowAdapter implements KeyListener, Mo } public void init(ThreadGroup tg, GLWindow glWindow) { + isValid = false; this.glWindow = glWindow; glEventListener = createInstance(glEventListenerClazzName); + if(null == glEventListener) { + return; + } try { if(!setField(glEventListener, "window", glWindow)) { diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/ElektronenMultiplizierer.java b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/ElektronenMultiplizierer.java index 0e43a71b1..6fec015b0 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/ElektronenMultiplizierer.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/ElektronenMultiplizierer.java @@ -42,6 +42,9 @@ import javax.media.opengl.GLProfile; import javax.media.opengl.GLUniformData; import com.jogamp.common.nio.Buffers; +import com.jogamp.newt.event.KeyAdapter; +import com.jogamp.newt.event.KeyEvent; +import com.jogamp.newt.opengl.GLWindow; import com.jogamp.opengl.util.GLArrayDataServer; import com.jogamp.opengl.util.PMVMatrix; import com.jogamp.opengl.util.glsl.ShaderCode; @@ -153,6 +156,17 @@ public class ElektronenMultiplizierer implements GLEventListener { public boolean wantsFrameSkip() { return mCommandLineParameter_FrameSkip; } public boolean usesFullScreenMode() { return mUsesFullScreenMode; } + class TimeShiftKeys extends KeyAdapter { + public void keyPressed(KeyEvent e) { + if(KeyEvent.VK_RIGHT == e.getKeyCode()) { + skipFrames(120); + } else if(KeyEvent.VK_LEFT == e.getKeyCode()) { + skipFrames(-120); + } + } + } + TimeShiftKeys timeShiftKeys; + public ElektronenMultiplizierer ( String inBaseRoutineClassName, boolean inMultiSampling, @@ -187,6 +201,11 @@ public class ElektronenMultiplizierer implements GLEventListener { mFrameSkipAverageFramerateTimeStart = 0; mFrameCounter = 0; skipFrames(startFrame); + timeShiftKeys = new TimeShiftKeys(); + } + + public ElektronenMultiplizierer() { + this(null, false, -1, false, -1.0f, false, true, 30, 0); } /** @@ -204,6 +223,12 @@ public class ElektronenMultiplizierer implements GLEventListener { } public void init(GLAutoDrawable drawable) { + if(drawable instanceof GLWindow) { + final GLWindow glw = (GLWindow) drawable; + if ( glw.getKeyListener(0) != timeShiftKeys ) { + glw.addKeyListener(0, timeShiftKeys); + } + } GL2ES2 gl = drawable.getGL().getGL2ES2(); gl.setSwapInterval(1); diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/newt/TestElektronenMultipliziererNEWT.java b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/newt/TestElektronenMultipliziererNEWT.java index 26917107d..d9cee4fdf 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/newt/TestElektronenMultipliziererNEWT.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/newt/TestElektronenMultipliziererNEWT.java @@ -114,15 +114,6 @@ public class TestElektronenMultipliziererNEWT extends UITestCase { } }.start(); } } - public void keyPressed(KeyEvent e) { - if(KeyEvent.VK_RIGHT == e.getKeyCode()) { - demo.skipFrames(120); - System.err.println("->"); - } else if(KeyEvent.VK_LEFT == e.getKeyCode()) { - demo.skipFrames(-120); - System.err.println("<-"); - } - } }); glWindow.setVisible(true); |