Changeset 6107 in josm for trunk/src/org


Ignore:
Timestamp:
2013-08-03T02:06:28+02:00 (11 years ago)
Author:
Don-vip
Message:

fix #8919 - fix memory leaks, including one introduced with r5982

Location:
trunk/src/org/openstreetmap/josm
Files:
3 edited

Legend:

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

    r6087 r6107  
    3232import org.openstreetmap.josm.gui.widgets.JosmTextField;
    3333
    34 
    3534public class ImageryAdjustAction extends MapMode implements MouseListener, MouseMotionListener, AWTEventListener{
    3635    static ImageryOffsetDialog offsetDialog;
     
    5857            layer.setVisible(true);
    5958        }
     59        oldDx = layer.getDx();
     60        oldDy = layer.getDy();
     61        addListeners();
     62        offsetDialog = new ImageryOffsetDialog();
     63        offsetDialog.setVisible(true);
     64    }
     65   
     66    protected void addListeners() {
    6067        Main.map.mapView.addMouseListener(this);
    6168        Main.map.mapView.addMouseMotionListener(this);
    62         oldDx = layer.getDx();
    63         oldDy = layer.getDy();
    6469        try {
    6570            Toolkit.getDefaultToolkit().addAWTEventListener(this, AWTEvent.KEY_EVENT_MASK);
    6671        } catch (SecurityException ex) {
    6772        }
    68         offsetDialog = new ImageryOffsetDialog();
    69         offsetDialog.setVisible(true);
    7073    }
    7174
     
    7780            offsetDialog = null;
    7881        }
     82        removeListeners();
     83    }
     84   
     85    protected void removeListeners() {
    7986        try {
    8087            Toolkit.getDefaultToolkit().removeAWTEventListener(this);
    8188        } catch (SecurityException ex) {
    8289        }
    83         Main.map.mapView.removeMouseListener(this);
    84         Main.map.mapView.removeMouseMotionListener(this);
     90        if (Main.isDisplayingMapView()) {
     91            Main.map.mapView.removeMouseMotionListener(this);
     92            Main.map.mapView.removeMouseListener(this);
     93        }
    8594    }
    8695
     
    265274        }
    266275    }
     276
     277    @Override
     278    public void destroy() {
     279        super.destroy();
     280        removeListeners();
     281        this.layer = null;
     282        this.oldMapMode = null;
     283    }
    267284}
  • trunk/src/org/openstreetmap/josm/actions/mapmode/ParallelWayAction.java

    r6069 r6107  
    596596        }
    597597    }
     598
     599    @Override
     600    public void destroy() {
     601        super.destroy();
     602        Main.pref.removePreferenceChangeListener(this);
     603    }
    598604}
  • trunk/src/org/openstreetmap/josm/gui/MapView.java

    r6100 r6107  
    210210    public MouseEvent lastMEvent = new MouseEvent(this, 0, 0, 0, 0, 0, 0, false); // In case somebody reads it before first mouse move
    211211
    212     private LinkedList<MapViewPaintable> temporaryLayers = new LinkedList<MapViewPaintable>();
     212    private final LinkedList<MapViewPaintable> temporaryLayers = new LinkedList<MapViewPaintable>();
    213213
    214214    private BufferedImage nonChangedLayersBuffer;
     
    954954            mapMover.destroy();
    955955        }
     956        activeLayer = null;
     957        changedLayer = null;
     958        editLayer = null;
     959        layers.clear();
     960        nonChangedLayers.clear();
     961        temporaryLayers.clear();
    956962    }
    957963
Note: See TracChangeset for help on using the changeset viewer.