Index: /applications/editors/josm/plugins/livegps/src/livegps/LiveGpsPlugin.java
===================================================================
--- /applications/editors/josm/plugins/livegps/src/livegps/LiveGpsPlugin.java	(revision 25831)
+++ /applications/editors/josm/plugins/livegps/src/livegps/LiveGpsPlugin.java	(revision 25832)
@@ -35,4 +35,6 @@
     private JCheckBoxMenuItem lgpsautocenter;
     private LiveGpsDialog lgpsdialog;
+    /* List of foreign (e.g. other plugins) subscribers */
+    List<PropertyChangeListener> listenerQueue = new ArrayList<PropertyChangeListener>();
 
     private GpxData data = new GpxData();
@@ -170,4 +172,6 @@
             acquirer.addPropertyChangeListener(lgpslayer);
             acquirer.addPropertyChangeListener(lgpsdialog);
+            for (PropertyChangeListener listener : listenerQueue)
+	        acquirer.addPropertyChangeListener(listener);
 
             acquirerThread.start();
@@ -188,4 +192,28 @@
     }
 
+    /** 
+     * Add a listener for gps events. 
+     * @param listener the listener. 
+     */ 
+    public void addPropertyChangeListener(PropertyChangeListener listener) { 
+        assert(!listenerQueue.contains(listener));
+
+        listenerQueue.add(listener); 
+        if (acquirer != null)
+            acquirer.addPropertyChangeListener(listener); 
+    } 
+
+    /** 
+     * Remove a listener for gps events. 
+     * @param listener the listener. 
+     */ 
+    public void removePropertyChangeListener(PropertyChangeListener listener) { 
+        assert(listenerQueue.contains(listener));
+
+        listenerQueue.remove(listener); 
+        if (acquirer != null) 
+            acquirer.removePropertyChangeListener(listener); 
+    }
+
     /* (non-Javadoc)
      * @see org.openstreetmap.josm.plugins.Plugin#mapFrameInitialized(org.openstreetmap.josm.gui.MapFrame, org.openstreetmap.josm.gui.MapFrame)
