Index: trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/AudioMarker.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/AudioMarker.java	(revision 13418)
+++ trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/AudioMarker.java	(revision 13419)
@@ -41,6 +41,17 @@
     }
 
+    /**
+     * Returns the marker played the most recently, if any.
+     * @return the marker played the most recently, or {@code null}
+     */
     public static AudioMarker recentlyPlayedMarker() {
         return recentlyPlayedMarker;
+    }
+
+    /**
+     * Forgets the marker played the most recently, if any.
+     */
+    static void resetRecentlyPlayedMarker() {
+        recentlyPlayedMarker = null;
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 13418)
+++ trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 13419)
@@ -144,4 +144,16 @@
 
     @Override
+    public synchronized void destroy() {
+        if (data.contains(AudioMarker.recentlyPlayedMarker())) {
+            AudioMarker.resetRecentlyPlayedMarker();
+        }
+        syncAudioMarker = null;
+        currentMarker = null;
+        fromLayer = null;
+        data.clear();
+        super.destroy();
+    }
+
+    @Override
     public LayerPainter attachToMapView(MapViewEvent event) {
         event.getMapView().addMouseListener(new MarkerMouseAdapter());
