- Timestamp:
- 2018-02-12T23:19:49+01:00 (7 years ago)
- Location:
- trunk/src/org/openstreetmap/josm
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/command/PurgeCommand.java
r13173 r13420 115 115 } 116 116 } 117 getAffectedDataSet().clearMappaintCache(); 117 118 } finally { 118 119 getAffectedDataSet().endUpdate(); … … 126 127 return; 127 128 128 for (OsmPrimitive osm : toPurge) { 129 PrimitiveData data = makeIncompleteDataByPrimId.get(osm); 130 if (data != null) { 131 if (getAffectedDataSet().getPrimitiveById(osm) != osm) 132 throw new AssertionError( 133 String.format("Primitive %s has been made incomplete when purging, but it cannot be found on undo.", osm)); 134 osm.load(data); 135 } else { 136 if (getAffectedDataSet().getPrimitiveById(osm) != null) 137 throw new AssertionError(String.format("Primitive %s was removed when purging, but is still there on undo", osm)); 138 getAffectedDataSet().addPrimitive(osm); 139 } 140 } 141 142 for (Conflict<?> conflict : purgedConflicts) { 143 getAffectedDataSet().getConflicts().add(conflict); 129 getAffectedDataSet().beginUpdate(); 130 try { 131 for (OsmPrimitive osm : toPurge) { 132 PrimitiveData data = makeIncompleteDataByPrimId.get(osm); 133 if (data != null) { 134 if (getAffectedDataSet().getPrimitiveById(osm) != osm) 135 throw new AssertionError( 136 String.format("Primitive %s has been made incomplete when purging, but it cannot be found on undo.", osm)); 137 osm.load(data); 138 } else { 139 if (getAffectedDataSet().getPrimitiveById(osm) != null) 140 throw new AssertionError(String.format("Primitive %s was removed when purging, but is still there on undo", osm)); 141 getAffectedDataSet().addPrimitive(osm); 142 } 143 } 144 145 for (Conflict<?> conflict : purgedConflicts) { 146 getAffectedDataSet().getConflicts().add(conflict); 147 } 148 getAffectedDataSet().clearMappaintCache(); 149 } finally { 150 getAffectedDataSet().endUpdate(); 144 151 } 145 152 } -
trunk/src/org/openstreetmap/josm/data/osm/DataSet.java
r13309 r13420 200 200 private final ConflictCollection conflicts = new ConflictCollection(); 201 201 202 private short mappaintCacheIdx = 1; 203 202 204 /** 203 205 * Constructs a new {@code DataSet}. … … 1380 1382 return null; 1381 1383 } 1384 1385 /** 1386 * Returns mappaint cache index for this DataSet. 1387 * 1388 * If the {@link OsmPrimitive#mappaintCacheIdx} is not equal to the DataSet mappaint 1389 * cache index, this means the cache for that primitive is out of date. 1390 * @return mappaint cache index 1391 * @since 13420 1392 */ 1393 public short getMappaintCacheIndex() { 1394 return mappaintCacheIdx; 1395 } 1396 1397 /** 1398 * Clear the mappaint cache for this DataSet. 1399 * @since 13420 1400 */ 1401 public void clearMappaintCache() { 1402 mappaintCacheIdx++; 1403 } 1382 1404 } -
trunk/src/org/openstreetmap/josm/data/osm/OsmPrimitive.java
r13309 r13420 204 204 205 205 /** 206 * Check if the cached style for this primitive is up to date. 207 * @return true if the cached style for this primitive is up to date 208 * @since 13420 209 */ 210 public final boolean isCachedStyleUpToDate() { 211 return mappaintStyle != null && mappaintCacheIdx == dataSet.getMappaintCacheIndex(); 212 } 213 214 /** 215 * Declare that the cached style for this primitive is up to date. 216 * @since 13420 217 */ 218 public final void declareCachedStyleUpToDate() { 219 this.mappaintCacheIdx = dataSet.getMappaintCacheIndex(); 220 } 221 222 /** 206 223 * Returns mappaint cache index. 207 224 * @return mappaint cache index 208 */ 225 * @deprecated no longer supported (see also {@link #isCachedStyleUpToDate()}) 226 */ 227 @Deprecated 209 228 public final short getMappaintCacheIdx() { 210 229 return mappaintCacheIdx; … … 214 233 * Sets the mappaint cache index. 215 234 * @param mappaintCacheIdx mappaint cache index 216 */ 235 * @deprecated no longer supported (see also {@link #declareCachedStyleUpToDate()}) 236 */ 237 @Deprecated 217 238 public final void setMappaintCacheIdx(short mappaintCacheIdx) { 218 239 this.mappaintCacheIdx = mappaintCacheIdx; -
trunk/src/org/openstreetmap/josm/gui/mappaint/ElemStyles.java
r13104 r13420 19 19 import org.openstreetmap.josm.data.osm.visitor.paint.relations.Multipolygon; 20 20 import org.openstreetmap.josm.data.osm.visitor.paint.relations.MultipolygonCache; 21 import org.openstreetmap.josm.gui.MainApplication; 21 22 import org.openstreetmap.josm.gui.NavigatableComponent; 23 import org.openstreetmap.josm.gui.layer.OsmDataLayer; 22 24 import org.openstreetmap.josm.gui.mappaint.DividedScale.RangeViolatedError; 23 25 import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource; … … 90 92 preferenceCache.clear(); 91 93 backgroundColorCache = null; 94 MainApplication.getLayerManager().getLayersOfType(OsmDataLayer.class).forEach( 95 dl -> dl.data.clearMappaintCache()); 92 96 }); 93 97 } … … 139 143 */ 140 144 public Pair<StyleElementList, Range> getStyleCacheWithRange(OsmPrimitive osm, double scale, NavigatableComponent nc) { 141 if ( osm.mappaintStyle == null || osm.getMappaintCacheIdx() != cacheIdx|| scale <= 0) {145 if (!osm.isCachedStyleUpToDate() || scale <= 0) { 142 146 osm.mappaintStyle = StyleCache.EMPTY_STYLECACHE; 143 147 } else { … … 195 199 + ", scale: " + scale + ", new stylelist: " + p.a + ", new range: " + p.b + ')', e); 196 200 } 197 osm. setMappaintCacheIdx(cacheIdx);201 osm.declareCachedStyleUpToDate(); 198 202 return p; 199 203 }
Note:
See TracChangeset
for help on using the changeset viewer.