Re: [visad] visad with java 1.6

Hello,

 

I've experienced this issue with Java 1.6, Java3D 1.5.1 and VisAD 2.0
(~2003 source).   

 

It appears that Java 1.6 and Java3D 1.5.1 are more sensitive to Swing/UI
calls taking place outside of the event dispatch thread (EDT).  The
underlying issue appears to be with the instantiation of
visad.DisplayEvent.  Somewhere in the instantiation of DisplayEvent a
Swing call is made which can hang the application if done outside the
EDT (I think the instantiation of java.awt.MouseEvent in DisplayEvent
was the issue as it makes calls on the underlying component passed into
the MouseEvent constructor). 

 

I resolved the issue by modifying VisADCanvasJ3D and  DisplayImpl so
that DisplayEvent is only instantiated on the EDT.   Attached are the
DisplayImpl and VisADCanvasJ3D with DisplayEvent creation wrapped in
java.lang.Runnable instances dispatched on the EDT (if required).  I
would have posted diffs but we are using an older version of VisAD as we
had issues upgrading years back (not a priority to resolve).  I am not
entirely comfortable with the changes but we've been using them heavily
for the past few months (they appear to be robust with the way we are
using VisAD, mileage may vary).

 

Tom

 

From: visad-bounces@xxxxxxxxxxxxxxxx
[mailto:visad-bounces@xxxxxxxxxxxxxxxx] On Behalf Of Curtis Rueden
Sent: Monday, June 02, 2008 5:29 PM
To: James Fishbaugh
Cc: VisAD mailing list
Subject: Re: [visad] visad with java 1.6

 

Hi James,

Without a test case it is difficult to diagnose anything. Does the
ScaleTest example program work on your machines? It calls the
setAspectCartesian method. I tried it on my Linux VM with Java 1.6.0_05
+ Java3D 1.5.1 with both Java2D and Java3D, and was unable to force a
hang or crash.

If ScaleTest does not hang on your machine, perhaps you could try
creating a small program that uses setAspectCartesian that does, and
then I can test it on my system. If you are unable to create such a
program, then your idea of compiling the latest VisAD code and digging
into the problem with your application on your system is probably your
best bet.

-Curtis

On Mon, Jun 2, 2008 at 3:24 PM, James Fishbaugh <jfishbaugh@xxxxxxxxx>
wrote:

Curtis,

Besides the visAD calls I described in my first email, I'm not sure
what specifics I can give you.  We did trace the call
"setAspectCartesian" into the visAD code and it froze on a call to
"synchronize" (not too surprising) waiting on a map lock.

James

 


NOTICE: This e-mail communication may contain privileged or other confidential 
information for the sole use of the designated recipients. If you have received 
it in error, please advise the sender by reply email and immediately delete the 
message and any attachments without reviewing, copying or disclosing the 
contents.

Attachment: DisplayImpl.java
Description: DisplayImpl.java

Attachment: VisADCanvasJ3D.java
Description: VisADCanvasJ3D.java