- Remove GL Late-initialization. GL is now set up when RocketFigure3d is constructed...
authorbkuker <bkuker@180e2498-e6e9-4542-8430-84ac67f01cd8>
Tue, 28 Aug 2012 22:16:17 +0000 (22:16 +0000)
committerbkuker <bkuker@180e2498-e6e9-4542-8430-84ac67f01cd8>
Tue, 28 Aug 2012 22:16:17 +0000 (22:16 +0000)
- Splash Screen must now be closed sooner. RocketFigure3d performs this task. This fixes a crash on Linux / X11.
- Check for "-Dopenrocket.3d.disable" and do no GL setup at all if this is defined. If users find GL cause OpenRocket to crash they may specify this option and use OR (Without 3d!)

git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@1005 180e2498-e6e9-4542-8430-84ac67f01cd8

core/ChangeLog
core/doc/properties.txt
core/src/net/sf/openrocket/gui/figure3d/RocketFigure3d.java
core/src/net/sf/openrocket/gui/scalefigure/RocketPanel.java

index 87738415eca73f3d0c550eed155bc390ee54156d..5987e25d511a1375f639d7296c0b1016d272886d 100644 (file)
@@ -1,3 +1,9 @@
+2012-08-28 Bill Kuker
+
+   * Removed late GL initialization, was causing issues with Java 7.
+   
+   * Added -Dopenrocket.3d.disable option for anyone experiencing crashes as a result of OpenGL.
+
 2012-08-01 Kevin Ruland
 
    * Changed the loader to pull *.rkt files from zip containers.
index db4a52faff9e158040f0dea8bd0fddf010f9056a..c9a44cb404fd1c4456ab8b3c54173e3650cc61b0 100644 (file)
@@ -9,7 +9,8 @@ openrocket.locale
        Select the default locale to be used, for example "en_US".
        If set to "xx", the logical keys will be displayed instead of the translated strings.
 
-
+openrocket.3d.disable
+       Disables all OpenGL calls if set.
 
 Logging options
 ---------------
index 3e3a98c49ecaf418c8167686969980b9e5a503cb..8df1e8508b84fc4cb7a9729751d1cf456af26afd 100644 (file)
@@ -6,8 +6,7 @@ import java.awt.Graphics2D;
 import java.awt.Point;\r
 import java.awt.Rectangle;\r
 import java.awt.RenderingHints;\r
-import java.awt.event.HierarchyEvent;\r
-import java.awt.event.HierarchyListener;\r
+import java.awt.SplashScreen;\r
 import java.awt.event.MouseEvent;\r
 import java.awt.geom.AffineTransform;\r
 import java.awt.image.BufferedImage;\r
@@ -86,20 +85,25 @@ public class RocketFigure3d extends JPanel implements GLEventListener {
        public RocketFigure3d(Configuration config) {\r
                this.configuration = config;\r
                this.setLayout(new BorderLayout());\r
-\r
-               /**\r
-                * This achieves late GL initialization, so that if there is a crash\r
-                * it does not occur until user selects 3D view, so as to not render\r
-                * the application unusable.\r
-                */\r
-               addHierarchyListener(new HierarchyListener() {\r
-                       @Override\r
-                       public void hierarchyChanged(HierarchyEvent e) {\r
-                               log.verbose("GL - Calling initGLCanvas on hierarchy change");\r
-                               initGLCanvas();\r
-                               RocketFigure3d.this.removeHierarchyListener(this);\r
-                       }\r
-               });\r
+               \r
+               //Only initizlize GL if 3d is enabled.\r
+               if ( is3dEnabled() ){\r
+                       //Fixes a linux / X bug: Splash must be closed before GL Init\r
+                       SplashScreen splash = SplashScreen.getSplashScreen();\r
+                       if ( splash != null )\r
+                               splash.close();\r
+                       \r
+                       initGLCanvas();\r
+               }\r
+       }\r
+       \r
+       /**\r
+        * Return true if 3d view is enabled. This may be toggled by the user at\r
+        * launch time.\r
+        * @return\r
+        */\r
+       public static boolean is3dEnabled(){\r
+               return System.getProperty("openrocket.3d.disable") == null;\r
        }\r
        \r
        private void initGLCanvas(){\r
index ed80812dc335f52b0306e6fee96655d67d4ebbdf..2cef70809bbab6a969e2a4aee1e17f269514fcfa 100644 (file)
@@ -285,9 +285,9 @@ public class RocketPanel extends JPanel implements TreeSelectionListener, Change
                        }
                });
                bg.add(toggle3d);
+               toggle3d.setEnabled(RocketFigure3d.is3dEnabled());
                add(toggle3d, "gap rel");
 
-
                // Zoom level selector
                scaleSelector = new ScaleSelector(scrollPane);
                add(scaleSelector);