Ignore:
Timestamp:
2020-10-08T10:37:27+02:00 (4 years ago)
Author:
GerdP
Message:

see #19885: memory leak with "temporary" objects in validator and actions
first bunch of changes

  • use ChangeNodesCommand instead of ChangeCommand
  • call DataSet.clearSelectionHistory() in Dataset.clear()
  • remove fake parent way in AbstractMapRenderer
Location:
trunk/src/org/openstreetmap/josm/actions
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/CreateCircleAction.java

    r16438 r17110  
    1616
    1717import org.openstreetmap.josm.command.AddCommand;
    18 import org.openstreetmap.josm.command.ChangeCommand;
     18import org.openstreetmap.josm.command.ChangeNodesCommand;
    1919import org.openstreetmap.josm.command.Command;
    2020import org.openstreetmap.josm.command.SequenceCommand;
     
    234234            cmds.add(new AddCommand(ds, newWay));
    235235        } else {
    236             Way newWay = new Way(existingWay);
    237             newWay.setNodes(nodesToAdd);
    238             cmds.add(new ChangeCommand(ds, existingWay, newWay));
     236            cmds.add(new ChangeNodesCommand(ds, existingWay, nodesToAdd));
    239237        }
    240238
  • trunk/src/org/openstreetmap/josm/actions/SimplifyWayAction.java

    r16630 r17110  
    3131import javax.swing.event.ChangeListener;
    3232
    33 import org.openstreetmap.josm.command.ChangeCommand;
     33import org.openstreetmap.josm.command.ChangeNodesCommand;
    3434import org.openstreetmap.josm.command.Command;
    3535import org.openstreetmap.josm.command.DeleteCommand;
     
    411411
    412412        Collection<Command> cmds = new LinkedList<>();
    413         Way newWay = new Way(w);
    414         newWay.setNodes(newNodes);
    415         cmds.add(new ChangeCommand(w, newWay));
     413        cmds.add(new ChangeNodesCommand(w, newNodes));
    416414        cmds.add(new DeleteCommand(w.getDataSet(), delNodes));
    417415        w.getDataSet().clearSelection(delNodes);
  • trunk/src/org/openstreetmap/josm/actions/mapmode/ImproveWayAccuracyAction.java

    r15063 r17110  
    490490                            UndoRedoHandler.getInstance().add(deleteCmd);
    491491                        }
     492                        newWay.setNodes(null);
    492493                    } else {
    493494                        UndoRedoHandler.getInstance().add(new ChangeCommand(targetWay, newWay));
  • trunk/src/org/openstreetmap/josm/actions/mapmode/SelectAction.java

    r16968 r17110  
    1717import java.util.Iterator;
    1818import java.util.LinkedList;
     19import java.util.List;
    1920import java.util.Optional;
    2021
     
    2324import org.openstreetmap.josm.actions.MergeNodesAction;
    2425import org.openstreetmap.josm.command.AddCommand;
    25 import org.openstreetmap.josm.command.ChangeCommand;
     26import org.openstreetmap.josm.command.ChangeNodesCommand;
    2627import org.openstreetmap.josm.command.Command;
    2728import org.openstreetmap.josm.command.MoveCommand;
     
    12421243            for (WaySegment virtualWay : virtualWays) {
    12431244                Way w = virtualWay.way;
    1244                 Way wnew = new Way(w);
    1245                 wnew.addNode(virtualWay.lowerIndex + 1, virtualNode);
    1246                 virtualCmds.add(new ChangeCommand(ds, w, wnew));
     1245                List<Node> modNodes = w.getNodes();
     1246                modNodes.add(virtualWay.lowerIndex + 1, virtualNode);
     1247                virtualCmds.add(new ChangeNodesCommand(ds, w, modNodes));
    12471248            }
    12481249            virtualCmds.add(new MoveCommand(ds, virtualNode, startEN, currentEN));
Note: See TracChangeset for help on using the changeset viewer.