Description
sdrtrunk Version
master
Describe the bug
We get an exception if the application decodes an additional GPS location for an entity while the map is in the middle of rendering or updating the history trail.
2024-01-30 08:29:10.226 INFO i.g.d.a.b.b.BroadcastifyCallBroadcaster - Broadcastify Calls keep-alive success [731MB/1GB 70%]
Exception in thread "AWT-EventQueue-0" java.util.ConcurrentModificationException
at java.base/java.util.ArrayList$Itr.checkForComodification(Unknown Source)
at java.base/java.util.ArrayList$Itr.next(Unknown Source)
at java.base/java.util.Collections$UnmodifiableCollection$1.next(Unknown Source)
at io.github.dsheirer.map.PlottableEntityRenderer.drawRoute(PlottableEntityRenderer.java:167)
at io.github.dsheirer.map.PlottableEntityRenderer.paintRoute(PlottableEntityRenderer.java:156)
at io.github.dsheirer.map.PlottableEntityRenderer.paintPlottableEntity(PlottableEntityRenderer.java:75)
at io.github.dsheirer.map.PlottableEntityPainter.doPaint(PlottableEntityPainter.java:77)
at io.github.dsheirer.map.PlottableEntityPainter.doPaint(PlottableEntityPainter.java:34)
at org.jdesktop.swingx.painter.AbstractPainter.paint(AbstractPainter.java:432)
at org.jdesktop.swingx.JXMapViewer.drawOverlays(JXMapViewer.java:318)
at org.jdesktop.swingx.JXMapViewer.doPaintComponent(JXMapViewer.java:193)
at org.jdesktop.swingx.JXMapViewer.paintComponent(JXMapViewer.java:175)
at java.desktop/javax.swing.JComponent.paint(Unknown Source)
at java.desktop/javax.swing.JComponent.paintToOffscreen(Unknown Source)
at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBufferedImpl(Unknown Source)
at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
at java.desktop/javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
at java.desktop/javax.swing.RepaintManager.paint(Unknown Source)
at java.desktop/javax.swing.JComponent._paintImmediately(Unknown Source)
at java.desktop/javax.swing.JComponent.paintImmediately(Unknown Source)
at java.desktop/javax.swing.RepaintManager$4.run(Unknown Source)
at java.desktop/javax.swing.RepaintManager$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at java.desktop/javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source)
at java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)