Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[udig-devel] Fwd: [udig-commits] svn - r31024 - udig/trunk/plugins/net.refractions.udig.project/src/net/refractions/udig/project/internal/render/impl

Hi Vitalus,
can you please comment that.

The udig 1.1 branch these day often doesn't render properly (i.e.
refresh button has to be triggered a bit too often). I am wondering if
your fix could be needed/of help also on branch?

Ciao
Andrea


---------- Forwarded message ----------
From:  <vitalus@xxxxxxxxxxxxxxxxxxxx>
Date: Mon, Dec 29, 2008 at 9:25 AM
Subject: [udig-commits] svn - r31024 -
udig/trunk/plugins/net.refractions.udig.project/src/net/refractions/udig/project/internal/render/impl
To: udig-commits@xxxxxxxxxxxxxxxxxxxxx


Author: vitalus
Date: 2008-12-29 00:25:57 -0800 (Mon, 29 Dec 2008)
New Revision: 31024

Modified:
  udig/trunk/plugins/net.refractions.udig.project/src/net/refractions/udig/project/internal/render/impl/RenderJob.java
Log:
fix for deadlock in RenderJob because of MismatchedReferenceSystemException

Modified: udig/trunk/plugins/net.refractions.udig.project/src/net/refractions/udig/project/internal/render/impl/RenderJob.java
===================================================================
--- udig/trunk/plugins/net.refractions.udig.project/src/net/refractions/udig/project/internal/render/impl/RenderJob.java
       2008-12-27 07:07:18 UTC (rev 31023)
+++ udig/trunk/plugins/net.refractions.udig.project/src/net/refractions/udig/project/internal/render/impl/RenderJob.java
       2008-12-29 08:25:57 UTC (rev 31024)
@@ -25,6 +25,8 @@
 import org.eclipse.core.runtime.jobs.Job;
 import org.geotools.geometry.jts.ReferencedEnvelope;
 import org.geotools.referencing.CRS;
+import org.geotools.referencing.crs.DefaultEngineeringCRS;
+import org.opengis.geometry.MismatchedReferenceSystemException;
 import org.opengis.referencing.FactoryException;
 import org.opengis.referencing.crs.CoordinateReferenceSystem;
 import org.opengis.referencing.operation.TransformException;
@@ -222,25 +224,38 @@
    private synchronized ReferencedEnvelope combineRequests() throws
TransformException, FactoryException {
        CoordinateReferenceSystem targetCRS =
getExecutor().getContext().getCRS();
       ReferencedEnvelope bounds = new ReferencedEnvelope( targetCRS );
-
-        for( ReferencedEnvelope env : requests ) {
-               if( env.isNull() || env.isEmpty() ||
env.getCoordinateReferenceSystem() == null){
-                       // these are "invalid" requests and we will skip them
-                       System.out.println("We are skipping an empty request");
-                       continue; // skip!
-               }
-                       if(
!CRS.equalsIgnoreMetadata(env.getCoordinateReferenceSystem(),
targetCRS) ){
-                env = env.transform(targetCRS, true);
-            }
-            if( bounds.isNull() ){
-                bounds.init((Envelope)env);
-            }
-            else {
-               bounds.include(env);
-                // bounds.expandToInclude(env);
-            }
-        }
-        requests.clear();
+       try{
+               for( ReferencedEnvelope env : requests ) {
+                       CoordinateReferenceSystem envCRS =
env.getCoordinateReferenceSystem();
+                       if( env.isNull() || env.isEmpty() || envCRS == null){
+                               // these are "invalid" requests and we
will skip them
+                               System.out.println("We are skipping an
empty request");
+                               continue; // skip!
+                       }
+
+                       //Vitalus: fix for deadlock in RenderJob
because of MismatchedReferenceSystemException
+                       //during transforming from
DefaultEngineeringCRS.GENERIC_2D
+                       //to EPSG projection.
(DefaultEngineeringCRS.GENERIC_2D to EPSG 2393 e.g.)
+                       if (envCRS != DefaultEngineeringCRS.GENERIC_2D
+                                       && envCRS !=
DefaultEngineeringCRS.GENERIC_3D
+                                       && envCRS !=
DefaultEngineeringCRS.CARTESIAN_2D
+                                       && envCRS !=
DefaultEngineeringCRS.CARTESIAN_3D) {
+
+                               if (!CRS.equalsIgnoreMetadata(envCRS,
targetCRS)) {
+                                       env = env.transform(targetCRS, true);
+                               }
+                       }
+                       if( bounds.isNull() ){
+                               bounds.init((Envelope)env);
+                       }
+                       else {
+                               bounds.include(env);
+                               // bounds.expandToInclude(env);
+                       }
+               }
+       }finally{
+               requests.clear();
+       }
        return bounds;
    }


_______________________________________________
udig-commits mailing list
udig-commits@xxxxxxxxxxxxxxxxxxxxx
http://lists.refractions.net/mailman/listinfo/udig-commits


Back to the top