Ignore:
Timestamp:
11.03.2010 21:01:49 (2 years ago)
Author:
jttt
Message:

Reuse offscreenBuffer if layers didn't change

File:
1 edited

Legend:

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

    r3078 r3116  
    4444import org.openstreetmap.josm.command.PurgePrimitivesCommand; 
    4545import org.openstreetmap.josm.data.Bounds; 
     46import org.openstreetmap.josm.data.SelectionChangedListener; 
    4647import org.openstreetmap.josm.data.conflict.Conflict; 
    4748import org.openstreetmap.josm.data.conflict.ConflictCollection; 
     
    5960import org.openstreetmap.josm.data.osm.Relation; 
    6061import org.openstreetmap.josm.data.osm.Way; 
     62import org.openstreetmap.josm.data.osm.event.AbstractDatasetChangedEvent; 
     63import org.openstreetmap.josm.data.osm.event.DataSetListenerAdapter; 
     64import org.openstreetmap.josm.data.osm.event.DataSetListenerAdapter.Listener; 
    6165import org.openstreetmap.josm.data.osm.visitor.AbstractVisitor; 
    6266import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor; 
     
    7983 * @author imi 
    8084 */ 
    81 public class OsmDataLayer extends Layer { 
     85public class OsmDataLayer extends Layer implements Listener, SelectionChangedListener { 
    8286    static public final String REQUIRES_SAVE_TO_DISK_PROP = OsmDataLayer.class.getName() + ".requiresSaveToDisk"; 
    8387    static public final String REQUIRES_UPLOAD_TO_SERVER_PROP = OsmDataLayer.class.getName() + ".requiresUploadToServer"; 
     
    8589    private boolean requiresSaveToFile = false; 
    8690    private boolean requiresUploadToServer = false; 
     91    private boolean isChanged = true; 
     92    private int highlightUpdateCount; 
     93    private int viewId; 
    8794 
    8895    protected void setRequiresSaveToFile(boolean newValue) { 
     
    199206        this.setAssociatedFile(associatedFile); 
    200207        conflicts = new ConflictCollection(); 
     208        data.addDataSetListener(new DataSetListenerAdapter(this)); 
     209        DataSet.selListeners.add(this); 
    201210    } 
    202211 
     
    215224     */ 
    216225    @Override public void paint(final Graphics2D g, final MapView mv, Bounds box) { 
     226        isChanged = false; 
     227        highlightUpdateCount = data.getHighlightUpdateCount(); 
     228        viewId = Main.map.mapView.getViewID(); 
     229 
    217230        boolean active = mv.getActiveLayer() == this; 
    218231        boolean inactive = !active && Main.pref.getBoolean("draw.data.inactive_color", true); 
     
    711724    } 
    712725 
     726    @Override 
     727    public boolean isChanged() { 
     728        return isChanged || highlightUpdateCount != data.getHighlightUpdateCount() || viewId != Main.map.mapView.getViewID(); 
     729    } 
     730 
    713731    /** 
    714732     * Initializes the layer after a successful save of OSM data to a file 
     
    752770 
    753771    } 
     772 
     773    public void processDatasetEvent(AbstractDatasetChangedEvent event) { 
     774        isChanged = true; 
     775    } 
     776 
     777    public void selectionChanged(Collection<? extends OsmPrimitive> newSelection) { 
     778        isChanged = true; 
     779    } 
    754780} 
Note: See TracChangeset for help on using the changeset viewer.