Hi VisAD people,It has been about 2 months since I reported this bug and I've started to look at it again.
I'd like to report that it still manifests with the most recent checkout of visad from svn (20100628) with openjdk 1.6 and java3d 1.5.2.
Is there a visad ticketing system? has this bug been added? What is the process?
You guys are experts with this library, are there any additional suggestions I could try?
My current strategies include:1. attempting to detect the presence of the bug and throw an exception (unfortunately the scene graph looks fine) 2. peek into the visad infrastructure and root out the race condition/bug (it's a beast and slow going inferring internal behaviours)
3. improving reproducibility (see attached)I have an updated the test harness to reproduce the bug with build scripts and lots of docs (see attached). Just just add a visad.jar file to the lib directory.
thanks for any help you can provide! Jason. Dr. Jason Brownlee Software Engineer Australian Bureau of Meteorology On 04/21/2010 11:38 AM, Jason Brownlee wrote:
Hi Bill, Thanks for the suggested fix. I have tried to programmatically zoom the display in the test harness, without luck in addressing the symptoms of the bug. On your suggestion, I tried simply updating the projection matrix with its current value: private void runTestFix(Display display) throws Exception { Thread.sleep(2000); ProjectionControl projectionControl = ((DisplayImplJ3D)display).getProjectionControl(); double[] matrix = projectionControl.getMatrix(); projectionControl.setMatrix(matrix); } I also tried a progressive zoom, and a progressive zoom with a reset, both of which had no effect on the bug: private void runTestFix(Display display) throws Exception { Thread.sleep(2000); ProjectionControl projectionControl = ((DisplayImplJ3D)display).getProjectionControl(); double[] matrix = projectionControl.getMatrix(); double [] base = {matrix[0], matrix[5], matrix[10]}; for (int i = 0; i < 4; i++) { matrix[0] += 0.25; matrix[5] += 0.25; matrix[10] += 0.25; projectionControl.setMatrix(matrix); } // reset matrix[0] = base[0]; matrix[5] = base[1]; matrix[10] = base[2]; projectionControl.setMatrix(matrix); } A virtual desktop change will force a re-draw that will address the symptom, causing the missing geometry to be displayed again. Interestingly, a zoom in our operational application does cause the geometry to be displayed most of the time for most types of geometry, although was contingent on the amount of zoom (and I presume the number of triggered internal display change events, or similar). Sincerely, Dr Jason Brownlee Software Engineer Australian Bureau of Meteorology On 04/20/2010 10:54 PM, hiding@xxxxxxxxx wrote:Jason, Thanks for your very clear statement of the problem. I no longer work on VisAD, but one part of your message caught my eye:Analysis shows the geometry is still in the scene graph, and is live. Minimizing, resizing, further add/remove data references, and forced doAction on the display do no correct the bug. Major operations on the display that force a full re-draw (switching virtual desktops on Linux, zoom operation in our application) will cause the geometry to be displayed again.If this bug proves to be difficult to track down, or is even a bug in Java3D, one work around would be, whenever data is added to or removed from a display, to trigger a delayed (say, after 0.5 second) redraw. My memory of Java3D is a bit shaky, but this might be done by setting the projection matrix (to the same value it currently has). Good luck, Bill_______________________________________________ visad mailing list visad@xxxxxxxxxxxxxxxx For list information, to unsubscribe, visit: http://www.unidata.ucar.edu/mailing_lists/
Attachment:
visadbug.tar.gz
Description: GNU Zip compressed data
visad
archives: