From 3a8c4d65f0e6e378738dc0c543173f79d10e5821 Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Fri, 4 Oct 2013 19:00:28 +0200 Subject: [PATCH] Bug 848: Add test applet ; Bug 816 Bug816AppletGLCanvas02: Remove 2nd Animator ; Fix intendation (TAB -> WS) --- jnlp-files/jogl-applet-bug816_glcanvas02.html | 4 +- jnlp-files/jogl-applet-bug818_gljpanel01.html | 2 +- jnlp-files/jogl-applet-bug848_glcanvas01.html | 32 ++++ .../demos/es2/awt/Bug816AppletGLCanvas01.java | 150 +++++++++--------- .../demos/es2/awt/Bug816AppletGLCanvas02.java | 57 +++---- .../demos/es2/awt/Bug848AppletGLCanvas01.java | 86 ++++++++++ 6 files changed, 222 insertions(+), 109 deletions(-) create mode 100644 jnlp-files/jogl-applet-bug848_glcanvas01.html create mode 100644 src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/Bug848AppletGLCanvas01.java diff --git a/jnlp-files/jogl-applet-bug816_glcanvas02.html b/jnlp-files/jogl-applet-bug816_glcanvas02.html index 850b9752a0..f4958ec1b6 100644 --- a/jnlp-files/jogl-applet-bug816_glcanvas02.html +++ b/jnlp-files/jogl-applet-bug816_glcanvas02.html @@ -11,14 +11,14 @@

+ width="600" height="300"> - + + + +Bug 848: Applet on OSX w/ CALayer and 2 or more GLCanvas may crash + + + +

+Bug 848: Applet on OSX w/ CALayer and 2 or more GLCanvas may 'crash'. +

+ +

+ + + + + + Sorry, no Java support detected. + + + +

+ + diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/Bug816AppletGLCanvas01.java b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/Bug816AppletGLCanvas01.java index 175b053d12..4cecd90a13 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/Bug816AppletGLCanvas01.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/Bug816AppletGLCanvas01.java @@ -54,81 +54,81 @@ @SuppressWarnings("serial") public class Bug816AppletGLCanvas01 extends Applet implements GLEventListener { - public Bug816AppletGLCanvas01() { - } - - public static JFrame frame; - public static JPanel appletHolder; - public static boolean isApplet = true; - - static public void main(String args[]) { - Applet myApplet = null; - isApplet = false; - - myApplet = new Bug816AppletGLCanvas01(); - appletStarter(myApplet, "Bug861AppletGLCanvasTest01", 800, 600); - } - - static public void appletStarter(final Applet des, String frameName, int width, int height) { - appletHolder = new JPanel(); - if (frame != null) { - frame.dispose(); - frame = null; + public Bug816AppletGLCanvas01() { + } + + public static JFrame frame; + public static JPanel appletHolder; + public static boolean isApplet = true; + + static public void main(String args[]) { + Applet myApplet = null; + isApplet = false; + + myApplet = new Bug816AppletGLCanvas01(); + appletStarter(myApplet, "Bug861AppletGLCanvasTest01", 800, 600); + } + + static public void appletStarter(final Applet des, String frameName, int width, int height) { + appletHolder = new JPanel(); + if (frame != null) { + frame.dispose(); + frame = null; + } + frame = new JFrame(frameName); + frame.setVisible(false); + frame.getContentPane().add(appletHolder); + + appletHolder.setLayout(null); + des.setBounds(0, 0, width, height); + appletHolder.add(des); + + frame.setVisible(true); + int frameBorderSize = appletHolder.getLocationOnScreen().x - frame.getLocationOnScreen().x; + int titleBarHeight = appletHolder.getLocationOnScreen().y - frame.getLocationOnScreen().y; + int frameWidth = width + 2 * frameBorderSize; + int frameHeight = height + titleBarHeight + frameBorderSize; + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setSize(frameWidth, frameHeight); + frame.setVisible(true); + des.init(); + frame.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + System.exit(0); + } + }); + } + + public void init() { + initOpenGLAWT(); + } + + public void initOpenGLAWT() { + setBackground(Color.gray); + setLayout(null); + + GLProfile glp = GLProfile.getDefault(); + GLCapabilities caps = new GLCapabilities(glp); + GLCanvas canvas = new GLCanvas((GLCapabilitiesImmutable) caps); + canvas.setBounds(50, 50, 200, 450); + canvas.addGLEventListener(this); + add(canvas); + } + + public void init(GLAutoDrawable gLAutoDrawable) { + GL gl = gLAutoDrawable.getGL(); + gl.glClearColor(1.0f, 0.0f, 0.0f, 1.0f); + gl.glClear(GL.GL_COLOR_BUFFER_BIT); + gLAutoDrawable.swapBuffers(); + } + + public void dispose(GLAutoDrawable glad) { + } + + public void display(GLAutoDrawable glad) { + } + + public void reshape(GLAutoDrawable glad, int i, int i1, int i2, int i3) { } - frame = new JFrame(frameName); - frame.setVisible(false); - frame.getContentPane().add(appletHolder); - - appletHolder.setLayout(null); - des.setBounds(0, 0, width, height); - appletHolder.add(des); - - frame.setVisible(true); - int frameBorderSize = appletHolder.getLocationOnScreen().x - frame.getLocationOnScreen().x; - int titleBarHeight = appletHolder.getLocationOnScreen().y - frame.getLocationOnScreen().y; - int frameWidth = width + 2 * frameBorderSize; - int frameHeight = height + titleBarHeight + frameBorderSize; - frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - frame.setSize(frameWidth, frameHeight); - frame.setVisible(true); - des.init(); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - System.exit(0); - } - }); - } - - public void init() { - initOpenGLAWT(); - } - - public void initOpenGLAWT() { - setBackground(Color.gray); - setLayout(null); - - GLProfile glp = GLProfile.getDefault(); - GLCapabilities caps = new GLCapabilities(glp); - GLCanvas canvas = new GLCanvas((GLCapabilitiesImmutable) caps); - canvas.setBounds(50, 50, 200, 450); - canvas.addGLEventListener(this); - add(canvas); - } - - public void init(GLAutoDrawable gLAutoDrawable) { - GL gl = gLAutoDrawable.getGL(); - gl.glClearColor(1.0f, 0.0f, 0.0f, 1.0f); - gl.glClear(GL.GL_COLOR_BUFFER_BIT); - gLAutoDrawable.swapBuffers(); - } - - public void dispose(GLAutoDrawable glad) { - } - - public void display(GLAutoDrawable glad) { - } - - public void reshape(GLAutoDrawable glad, int i, int i1, int i2, int i3) { - } } diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/Bug816AppletGLCanvas02.java b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/Bug816AppletGLCanvas02.java index 9ae0a2bbd0..161f05c8d7 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/Bug816AppletGLCanvas02.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/Bug816AppletGLCanvas02.java @@ -28,8 +28,6 @@ package com.jogamp.opengl.test.junit.jogl.demos.es2.awt; import java.applet.Applet; -import java.util.ArrayList; -import java.util.List; import javax.media.opengl.GLAnimatorControl; import javax.media.opengl.awt.GLCanvas; @@ -49,37 +47,34 @@ */ @SuppressWarnings("serial") public class Bug816AppletGLCanvas02 extends Applet { - private List animators = new ArrayList(2); + GLAnimatorControl animator; - @Override - public void init() { - System.err.println("GearsApplet: init() - begin"); - new BoxLayout(this, BoxLayout.X_AXIS); - setSize(600, 300); - add(createCanvas()); - add(createCanvas()); - System.err.println("GearsApplet: init() - end"); - } + @Override + public void init() { + System.err.println("GearsApplet: init() - begin"); + animator = new Animator(); + new BoxLayout(this, BoxLayout.X_AXIS); + setSize(600, 300); + add(createCanvas()); + add(createCanvas()); + System.err.println("GearsApplet: init() - end"); + } - private GLCanvas createCanvas() { - GLCanvas canvas = new GLCanvas(); - canvas.addGLEventListener(new GearsES2(1)); - canvas.setSize(300, 300); - animators.add(new Animator(canvas)); - return canvas; - } + private GLCanvas createCanvas() { + GLCanvas canvas = new GLCanvas(); + canvas.addGLEventListener(new GearsES2(1)); + canvas.setSize(300, 300); + animator.add(canvas); + return canvas; + } - @Override - public void start() { - for (GLAnimatorControl control : animators) { - control.start(); - } - } + @Override + public void start() { + animator.start(); + } - @Override - public void stop() { - for (GLAnimatorControl control : animators) { - control.stop(); - } - } + @Override + public void stop() { + animator.stop(); + } } diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/Bug848AppletGLCanvas01.java b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/Bug848AppletGLCanvas01.java new file mode 100644 index 0000000000..7b7b4e4c49 --- /dev/null +++ b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/awt/Bug848AppletGLCanvas01.java @@ -0,0 +1,86 @@ +/** + * Copyright 2013 JogAmp Community. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of JogAmp Community. + */ +package com.jogamp.opengl.test.junit.jogl.demos.es2.awt; + +import java.applet.Applet; +import java.util.ArrayList; +import java.util.List; + +import javax.media.opengl.GLAnimatorControl; +import javax.media.opengl.awt.GLCanvas; +import javax.swing.BoxLayout; + +import com.jogamp.opengl.test.junit.jogl.demos.es2.GearsES2; +import com.jogamp.opengl.util.Animator; + +/** + * Bug 848: Applet on OSX w/ CALayer and 2 or more GLCanvas may 'crash'. + *

+ * Test uses 2x3 GLCanvas in a box layout within the Applet. + *

+ */ +@SuppressWarnings("serial") +public class Bug848AppletGLCanvas01 extends Applet { + private List animators = new ArrayList(2); + + @Override + public void init() { + System.err.println("GearsApplet: init() - begin"); + new BoxLayout(this, BoxLayout.X_AXIS); + setSize(900, 600); + add(createCanvas()); + add(createCanvas()); + add(createCanvas()); + add(createCanvas()); + add(createCanvas()); + add(createCanvas()); + System.err.println("GearsApplet: init() - end"); + } + + private GLCanvas createCanvas() { + GLCanvas canvas = new GLCanvas(); + canvas.addGLEventListener(new GearsES2(1)); + canvas.setSize(300, 300); + animators.add(new Animator(canvas)); + return canvas; + } + + @Override + public void start() { + for (GLAnimatorControl control : animators) { + control.start(); + } + } + + @Override + public void stop() { + for (GLAnimatorControl control : animators) { + control.stop(); + } + } +}