From 56c6d1b71492bd5e8e03ae37755f97fc5f4c628d Mon Sep 17 00:00:00 2001 From: bkuker Date: Wed, 26 Dec 2012 09:42:13 -0500 Subject: [PATCH 1/4] Include JOGL implementation version in bug report --- core/src/net/sf/openrocket/gui/dialogs/BugReportDialog.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/src/net/sf/openrocket/gui/dialogs/BugReportDialog.java b/core/src/net/sf/openrocket/gui/dialogs/BugReportDialog.java index 045a7012f..2c01eedf5 100644 --- a/core/src/net/sf/openrocket/gui/dialogs/BugReportDialog.java +++ b/core/src/net/sf/openrocket/gui/dialogs/BugReportDialog.java @@ -26,6 +26,8 @@ import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; +import com.jogamp.opengl.JoglVersion; + import net.miginfocom.swing.MigLayout; import net.sf.openrocket.communication.BugReporter; import net.sf.openrocket.gui.components.SelectableLabel; @@ -273,6 +275,7 @@ public class BugReportDialog extends JDialog { sb.append("OpenRocket version: " + BuildProperties.getVersion() + "\n"); sb.append("OpenRocket source: " + BuildProperties.getBuildSource() + "\n"); sb.append("OpenRocket location: " + JarUtil.getCurrentJarFile() + "\n"); + sb.append("JOGL version: " + JoglVersion.getInstance().getImplementationVersion() + "\n"); sb.append("Current default locale: " + Locale.getDefault() + "\n"); sb.append("System properties:\n"); From bc2e759d86b794dbd0406d9b8a8cec19bead0bd4 Mon Sep 17 00:00:00 2001 From: bkuker Date: Wed, 26 Dec 2012 13:52:52 -0500 Subject: [PATCH 2/4] Remove some overactive logging --- .../gui/figure3d/RocketFigure3d.java | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/core/src/net/sf/openrocket/gui/figure3d/RocketFigure3d.java b/core/src/net/sf/openrocket/gui/figure3d/RocketFigure3d.java index b095adb8b..25155c44b 100644 --- a/core/src/net/sf/openrocket/gui/figure3d/RocketFigure3d.java +++ b/core/src/net/sf/openrocket/gui/figure3d/RocketFigure3d.java @@ -370,12 +370,12 @@ public class RocketFigure3d extends JPanel implements GLEventListener { @Override public void dispose(GLAutoDrawable drawable) { - log.verbose("GL - dispose() called"); + log.verbose("GL - dispose()"); } @Override public void init(GLAutoDrawable drawable) { - log.verbose("GL - init() called"); + log.verbose("GL - init()"); rr.init(drawable); GL2 gl = drawable.getGL().getGL2(); @@ -400,13 +400,11 @@ public class RocketFigure3d extends JPanel implements GLEventListener { extrasOverlay = new Overlay(drawable); caretOverlay = new Overlay(drawable); - - log.verbose("GL - init() complete"); } @Override public void reshape(GLAutoDrawable drawable, int x, int y, int w, int h) { - log.verbose("GL - reshape() called"); + log.verbose("GL - reshape()"); GL2 gl = drawable.getGL().getGL2(); GLU glu = new GLU(); @@ -419,7 +417,6 @@ public class RocketFigure3d extends JPanel implements GLEventListener { gl.glMatrixMode(GLMatrixFunc.GL_MODELVIEW); redrawExtras = true; - log.verbose("GL - reshape() complete"); } @SuppressWarnings("unused") @@ -458,7 +455,6 @@ public class RocketFigure3d extends JPanel implements GLEventListener { } private void setupView(GL2 gl, GLU glu) { - log.verbose("GL - setupView() called"); gl.glLoadIdentity(); gl.glLightfv(GLLightingFunc.GL_LIGHT1, GLLightingFunc.GL_POSITION, @@ -494,8 +490,6 @@ public class RocketFigure3d extends JPanel implements GLEventListener { gl.glScaled(-1, 1, 1); gl.glTranslated(-1, 0, 0); gl.glMatrixMode(GLMatrixFunc.GL_MODELVIEW); - - log.verbose("GL - setupView() complete"); } /** @@ -508,19 +502,15 @@ public class RocketFigure3d extends JPanel implements GLEventListener { } private void internalRepaint() { - log.verbose("GL - internalRepaint() called"); super.repaint(); if (canvas != null) canvas.display(); - log.verbose("GL - internalRepaint() complete"); } @Override public void repaint() { - log.verbose("GL - repaint() called"); redrawExtras = true; internalRepaint(); - log.verbose("GL - repaint() complete"); } private Set selection = new HashSet(); @@ -551,7 +541,6 @@ public class RocketFigure3d extends JPanel implements GLEventListener { // ///////////// Extra methods private Coordinate project(Coordinate c, GL2 gl, GLU glu) { - log.verbose("GL - project() called"); double[] mvmatrix = new double[16]; double[] projmatrix = new double[16]; int[] viewport = new int[4]; @@ -564,7 +553,6 @@ public class RocketFigure3d extends JPanel implements GLEventListener { glu.gluProject(c.x, c.y, c.z, mvmatrix, 0, projmatrix, 0, viewport, 0, out, 0); - log.verbose("GL - project() complete"); return new Coordinate(out[0], out[1], out[2]); } From 003e6c35f149e4ac9a87f5ce32dbd59929146f7b Mon Sep 17 00:00:00 2001 From: bkuker Date: Wed, 26 Dec 2012 13:56:24 -0500 Subject: [PATCH 3/4] if openrocket.debug then redirect stderr to log.debug(). --- .../gui/figure3d/JoglDebugAdaptor.java | 42 +++++++++++++++++++ .../gui/figure3d/RocketFigure3d.java | 2 + 2 files changed, 44 insertions(+) create mode 100644 core/src/net/sf/openrocket/gui/figure3d/JoglDebugAdaptor.java diff --git a/core/src/net/sf/openrocket/gui/figure3d/JoglDebugAdaptor.java b/core/src/net/sf/openrocket/gui/figure3d/JoglDebugAdaptor.java new file mode 100644 index 000000000..b9669e6bd --- /dev/null +++ b/core/src/net/sf/openrocket/gui/figure3d/JoglDebugAdaptor.java @@ -0,0 +1,42 @@ +package net.sf.openrocket.gui.figure3d; + +import java.io.IOException; +import java.io.OutputStream; +import java.io.PrintStream; + +import net.sf.openrocket.logging.LogHelper; +import net.sf.openrocket.startup.Application; + +/** + * Redirects system err into OpenRocket's log.debug() if openrocket.debug is enabled. + * This lets me capture JOGL debug as log events, which can be included in error reports etc. + * I wish I could get the JOGL debug log on a separate printstream, so I do not have to take + * over all of ERR. + * + * @author bkuker + * + */ +final class JoglDebugAdaptor { + private static final LogHelper log = Application.getLogger(); + + final static void plumbJoglDebug() { + if (RocketFigure3d.is3dEnabled() && System.getProperty("openrocket.debug") != null) { + System.setProperty("jogl.debug", "all"); + + System.setErr(new PrintStream(new OutputStream() { + StringBuilder sb = new StringBuilder(); + + @Override + public synchronized void write(int b) throws IOException { + if (b == '\r' || b == '\n') { + if (sb.toString().trim().length() > 0) + log.debug(sb.toString()); + sb = new StringBuilder(); + } else { + sb.append((char) b); + } + } + })); + } + } +} diff --git a/core/src/net/sf/openrocket/gui/figure3d/RocketFigure3d.java b/core/src/net/sf/openrocket/gui/figure3d/RocketFigure3d.java index 25155c44b..0b15e19cb 100644 --- a/core/src/net/sf/openrocket/gui/figure3d/RocketFigure3d.java +++ b/core/src/net/sf/openrocket/gui/figure3d/RocketFigure3d.java @@ -52,6 +52,8 @@ public class RocketFigure3d extends JPanel implements GLEventListener { private static final LogHelper log = Application.getLogger(); static { + JoglDebugAdaptor.plumbJoglDebug(); + //this allows the GL canvas and things like the motor selection //drop down to z-order themselves. JPopupMenu.setDefaultLightWeightPopupEnabled(false); From 77374d39923220a0cfb0d8d7ed037d2ace9be3d2 Mon Sep 17 00:00:00 2001 From: bkuker Date: Wed, 26 Dec 2012 14:01:30 -0500 Subject: [PATCH 4/4] Try to quiet JOGL down a little by classifying indented lines as verbose, not debug. --- .../sf/openrocket/gui/figure3d/JoglDebugAdaptor.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/core/src/net/sf/openrocket/gui/figure3d/JoglDebugAdaptor.java b/core/src/net/sf/openrocket/gui/figure3d/JoglDebugAdaptor.java index b9669e6bd..bd8120a14 100644 --- a/core/src/net/sf/openrocket/gui/figure3d/JoglDebugAdaptor.java +++ b/core/src/net/sf/openrocket/gui/figure3d/JoglDebugAdaptor.java @@ -29,8 +29,14 @@ final class JoglDebugAdaptor { @Override public synchronized void write(int b) throws IOException { if (b == '\r' || b == '\n') { - if (sb.toString().trim().length() > 0) - log.debug(sb.toString()); + if (sb.toString().trim().length() > 0){ + String s = sb.toString(); + if ( Character.isWhitespace(s.charAt(0))){ + log.verbose(sb.toString()); + } else { + log.debug(sb.toString()); + } + } sb = new StringBuilder(); } else { sb.append((char) b);