From: Jacob M. <ja...@ma...> - 2002-02-16 14:19:48
|
Hi Elias, Nice to see that you are giving gl4java a try :) What do you mean when you say your code hangs? Does the first frame show or are nothing shown at all? Be sure to set a layout before setVisible(). Also, calling pack() after setVisible() does not make sense. Here is a snippet from the code I use (I have no crash trouble). (The frame is a Swing JFrame in the case below) ------- f.getContentPane().setLayout(new BorderLayout()); f.pack(); Insets i = f.getInsets(); f.setBounds(0, 0, 640 + i.right + i.left, 480 + i.bottom + i.top); Dimension d = f.getSize(); GLCapabilities caps = new GLCapabilities(); GLAnimCanvas canvas = GLDrawableFactory.getFactory() .createGLAnimCanvas(caps, d.width, d.height); canvas.addGLEventListener(demo); // my event handler canvas.setUseRepaint(false); canvas.setUseFpsSleep(false); canvas.setUseYield(false); canvas.requestFocus(); f.getContentPane().add("Center", canvas); canvas.start(); f.setVisible(true); ------- I hope this helps, Jacob ----- Original Message ----- From: "Elias Naur" <na...@od...> To: <gl4...@li...> Sent: Saturday, February 16, 2002 15:01 Subject: [gl4java-usergroup] GL4Java hanging at startup > Hi, > > I've recently begun using GL4Java, but I have run into problems with Gl4Java > sometimes (~ every 10 times) hanging at startup, my startup code looks like > this > > frame.setVisible(true); > GLCapabilities caps = new GLCapabilities(true, false, true, 0, 0, 0, > 0, 0); > canvas = GLDrawableFactory.getFactory().createGLAnimCanvas(caps, > Globals.VIEW_WIDTH, Globals.VIEW_HEIGHT); > canvas.setUseRepaint(false); > canvas.setUseFpsSleep(false); > canvas.setUseYield(false); > canvas.addGLEventListener(renderer); > frame.add(canvas, BorderLayout.CENTER); > frame.pack(); > > canvas.requestFocus(); > canvas.start(); > > If I move the line frame.sertVisible(true) further down (e.g. after > canvas.start()), it hangs less often. the thread dump while hanging looks > like this:Full thread dump Java HotSpot(TM) Client VM (1.4.0-b92 mixed mode): > > "AWT-EventQueue-0" prio=1 tid=0x0x81d2cf0 nid=0x2577 runnable > [4cee6000..4cee686c] > at gl4java.GLContext.openOpenGLNative(Native Method) > at gl4java.GLContext.gljInit(GLContext.java:1996) > - locked <0x441426a0> (a gl4java.GLContext) > at gl4java.GLContext.createGLContext(GLContext.java:1942) > at gl4java.GLContext.<init>(GLContext.java:1161) > at gl4java.GLContext.<init>(GLContext.java:1251) > at gl4java.awt.GLCanvas.paint(GLCanvas.java:444) > at sun.awt.RepaintArea.paint(RepaintArea.java:180) > at sun.awt.motif.MComponentPeer.handleEvent(MComponentPeer.java:339) > at java.awt.Component.dispatchEventImpl(Component.java:3586) > at java.awt.Component.dispatchEvent(Component.java:3367) > at java.awt.EventQueue.dispatchEvent(EventQueue.java:445) > at > java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:1 90) > at > java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:144 ) > at > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) > at > java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:130) > at java.awt.EventDispatchThread.run(EventDispatchThread.java:98) > > "Thread-1" daemon prio=1 tid=0x0x81d53b8 nid=0x2576 waiting on monitor > [4ce65000..4ce6586c] > at java.lang.Object.wait(Native Method) > - waiting on <0x44170450> (a java.util.TaskQueue) > at java.util.TimerThread.mainLoop(Timer.java:429) > - locked <0x44170450> (a java.util.TaskQueue) > at java.util.TimerThread.run(Timer.java:382) > > "AWT-Motif" daemon prio=1 tid=0x0x81c2ef8 nid=0x2575 waiting for monitor > entry [4cde4000..4cde486c] > at sun.awt.motif.MToolkit.run(Native Method) > at java.lang.Thread.run(Thread.java:536) > > "AWT-Shutdown" prio=1 tid=0x0x819d550 nid=0x2574 waiting on monitor > [4cd63000..4cd6386c] > at java.lang.Object.wait(Native Method) > - waiting on <0x4461a478> (a java.lang.Object) > at java.lang.Object.wait(Object.java:426) > at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:259) > - locked <0x4461a478> (a java.lang.Object) > at java.lang.Thread.run(Thread.java:536) > > "Signal Dispatcher" daemon prio=1 tid=0x0x807b880 nid=0x2572 waiting on > monitor [0..0] > > "Finalizer" daemon prio=1 tid=0x0x8074478 nid=0x256f waiting on monitor > [4c2f2000..4c2f286c] > at java.lang.Object.wait(Native Method) > - waiting on <0x445ef168> (a java.lang.ref.ReferenceQueue$Lock) > at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111) > - locked <0x445ef168> (a java.lang.ref.ReferenceQueue$Lock) > at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127) > at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159) > > "Reference Handler" daemon prio=1 tid=0x0x8073830 nid=0x256e waiting on > monitor [4c271000..4c27186c] > at java.lang.Object.wait(Native Method) > - waiting on <0x445ef1d0> (a java.lang.ref.Reference$Lock) > at java.lang.Object.wait(Object.java:426) > at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:113) > - locked <0x445ef1d0> (a java.lang.ref.Reference$Lock) > > "main" prio=1 tid=0x0x8051558 nid=0x256b waiting for monitor entry > [bfffd000..bfffd718] > at sun.awt.motif.MComponentPeer.pReshape(Native Method) > at sun.awt.motif.MComponentPeer.setBounds(MComponentPeer.java:739) > at java.awt.Component.reshape(Component.java:1685) > - locked <0x44619fb0> (a java.awt.Component$AWTTreeLock) > at java.awt.Component.setBounds(Component.java:1644) > at java.awt.BorderLayout.layoutContainer(BorderLayout.java:683) > - locked <0x44619fb0> (a java.awt.Component$AWTTreeLock) > at java.awt.Container.layout(Container.java:835) > at java.awt.Container.doLayout(Container.java:825) > at java.awt.Container.validateTree(Container.java:903) > at java.awt.Container.validate(Container.java:878) > - locked <0x44619fb0> (a java.awt.Component$AWTTreeLock) > at java.awt.Window.pack(Window.java:418) > at life3d.Main.run(Main.java:73) > at life3d.Main.main(Main.java:102) > > "VM Thread" prio=1 tid=0x0x80706b0 nid=0x256d runnable > > "VM Periodic Task Thread" prio=1 tid=0x0x807a390 nid=0x2570 waiting on monitor > "Suspend Checker Thread" prio=1 tid=0x0x807ae08 nid=0x2571 runnable > > it looks like that every time (hang in openOpenGLNative()) > > I use red hat linux 7.2 with 2.4.17 kernel and nvidia drivers 2314. JVM > version is 1.4.0 and GL4Java version is 2.8.2.0 > > someone has advice? how can I pinpoint it even further? i.e. how can I > easily tell in which line in openOpenGLNative my app hangs? > > - Elias Naur > > > _______________________________________________ > gl4java-usergroup mailing list > gl4...@li... > https://lists.sourceforge.net/lists/listinfo/gl4java-usergroup > |