Ignore:
Timestamp:
2018-11-02T18:07:31+01:00 (5 years ago)
Author:
Don-vip
Message:

fix #16938 - improve performance when data contains ways with many nodes (patch by GerdP, modified)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java

    r14120 r14402  
    12981298            boolean useSelected, Collection<OsmPrimitive> preferredRefs) {
    12991299        WaySegment wayseg = null;
    1300         WaySegment ntsel = null;
    1301         WaySegment ntref = null;
    13021300        if (preferredRefs != null && preferredRefs.isEmpty())
    13031301            preferredRefs = null;
    13041302
    1305         searchLoop: for (List<WaySegment> wslist : getNearestWaySegmentsImpl(p, predicate).values()) {
     1303        for (List<WaySegment> wslist : getNearestWaySegmentsImpl(p, predicate).values()) {
    13061304            for (WaySegment ws : wslist) {
    13071305                if (wayseg == null) {
    13081306                    wayseg = ws;
    13091307                }
    1310                 if (ntsel == null && ws.way.isSelected()) {
    1311                     ntsel = ws;
    1312                     break searchLoop;
    1313                 }
    1314                 if (ntref == null && preferredRefs != null) {
     1308                if (useSelected && ws.way.isSelected()) {
     1309                    return ws;
     1310                }
     1311                if (preferredRefs != null && !preferredRefs.isEmpty()) {
    13151312                    // prefer ways containing given nodes
    1316                     for (Node nd: ws.way.getNodes()) {
    1317                         if (preferredRefs.contains(nd)) {
    1318                             ntref = ws;
    1319                             break searchLoop;
    1320                         }
     1313                    if (preferredRefs.contains(ws.getFirstNode()) || preferredRefs.contains(ws.getSecondNode())) {
     1314                        return ws;
    13211315                    }
    13221316                    Collection<OsmPrimitive> wayRefs = ws.way.getReferrers();
     
    13241318                    for (OsmPrimitive ref: preferredRefs) {
    13251319                        if (ref instanceof Relation && wayRefs.contains(ref)) {
    1326                             ntref = ws;
    1327                             break searchLoop;
     1320                            return ws;
    13281321                        }
    13291322                    }
     
    13311324            }
    13321325        }
    1333         if (ntsel != null && useSelected)
    1334             return ntsel;
    1335         if (ntref != null)
    1336             return ntref;
    13371326        return wayseg;
    13381327    }
Note: See TracChangeset for help on using the changeset viewer.