[
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