From 59f0a65076edf4d31cae05ca15a5067fc0bc8127 Mon Sep 17 00:00:00 2001 From: Taylor Smock Date: Tue, 9 Jul 2024 10:34:05 -0600 Subject: [PATCH] Fix an issue where sequence downloads would reopen the image viewer window This occurs since we want to update the node for the image in the viewer. The image entry was previously immutable, but to avoid the image viewer window reopening problem (and a flicker problem between high res and low res images), it is no longer immutable. Signed-off-by: Taylor Smock --- .../mapillary/gui/layer/geoimage/MapillaryImageEntry.java | 5 ++--- .../mapillary/gui/workers/MapillarySequenceDownloader.java | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/layer/geoimage/MapillaryImageEntry.java b/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/layer/geoimage/MapillaryImageEntry.java index e5685aaf8..2c165a110 100644 --- a/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/layer/geoimage/MapillaryImageEntry.java +++ b/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/layer/geoimage/MapillaryImageEntry.java @@ -86,7 +86,7 @@ public class MapillaryImageEntry private static final CacheAccess CACHE = JCSCacheManager .getCache("mapillary:mapillaryimageentry"); private static final String MESSAGE_SEPARATOR = " — "; - private final INode image; + private INode image; private final List> imageDetections = new ArrayList<>(); private SoftReference originalImage; private SoftReference layeredImage; @@ -124,8 +124,7 @@ public static MapillaryImageEntry getCachedEntry(final INode image) { MapillaryImageEntry entry = CACHE.get(id, () -> new MapillaryImageEntry(image)); if (entry.image.getNumKeys() <= image.getNumKeys() || image != entry.image /* Object reference equality */) { - CACHE.remove(id); - entry = CACHE.get(id, () -> new MapillaryImageEntry(image)); + entry.image = image; } return entry; } diff --git a/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/workers/MapillarySequenceDownloader.java b/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/workers/MapillarySequenceDownloader.java index 8441a5929..ef7e771bc 100644 --- a/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/workers/MapillarySequenceDownloader.java +++ b/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/workers/MapillarySequenceDownloader.java @@ -11,7 +11,6 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.locks.Lock; import java.util.function.Consumer; -import java.util.stream.Collectors; import org.openstreetmap.josm.data.vector.VectorDataSet; import org.openstreetmap.josm.data.vector.VectorNode; @@ -157,7 +156,7 @@ private synchronized MapillarySequence getCurrentSequence() { tNode.setOsmId(n.getOsmId(), n.getVersion()); tNode.setKeys(n.getKeys()); return tNode; - }).collect(Collectors.toList())); + }).toList()); return seq; }