Index: plications/editors/josm/plugins/livegps/src/livegps/ILiveGpsSuppressor.java
===================================================================
--- /applications/editors/josm/plugins/livegps/src/livegps/ILiveGpsSuppressor.java	(revision 25796)
+++ 	(revision )
@@ -1,20 +1,0 @@
-package livegps;
-
-/**
- * Interface for class LiveGpsSuppressor, only has a query if currently an update is allowed.
- *
- * @author casualwalker
- *
- */
-public interface ILiveGpsSuppressor {
-
-    /**
-     * Query, if an update is currently allowed.
-     * When it is allowed, it will disable the allowUpdate flag as a side effect.
-     * (this means, one thread got to issue an update event)
-     *
-     * @return true, if an update is currently allowed; false, if the update shall be suppressed.
-     */
-    boolean isAllowUpdate();
-
-}
Index: /applications/editors/josm/plugins/livegps/src/livegps/LiveGpsLayer.java
===================================================================
--- /applications/editors/josm/plugins/livegps/src/livegps/LiveGpsLayer.java	(revision 25796)
+++ /applications/editors/josm/plugins/livegps/src/livegps/LiveGpsLayer.java	(revision 25797)
@@ -25,4 +25,10 @@
     public static final String LAYER_NAME = tr("LiveGPS layer");
     public static final String KEY_LIVEGPS_COLOR = "color.livegps.position";
+
+    private static final int DEFAULT_SLEEP_TIME = 500;	/* Default sleep time is 0.5 seconds. */
+    private static final String oldConfigKey = "livegps.refreshinterval";     /* in seconds */
+    private static final String ConfigKey = "livegps.refresh_interval_msec";  /* in msec */
+    private int sleepTime;
+
     LatLon lastPos;
     WayPoint lastPoint;
@@ -32,11 +38,6 @@
     // JLabel lbl;
     boolean autocenter;
-    private SimpleDateFormat dateFormat = new SimpleDateFormat(
-    "yyyy-MM-dd'T'HH:mm:ss.SSS");
-
-    /**
-     * The suppressor is queried, if the GUI shall be re-drawn.
-     */
-    private ILiveGpsSuppressor suppressor;
+    private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
+    private long lastUpdate = 0;
 
     public LiveGpsLayer(GpxData data) {
@@ -49,4 +50,6 @@
         GpxTrack trackBeingWritten = new SingleSegmentGpxTrack(trackSegment, attr);
         data.tracks.add(trackBeingWritten);
+
+	initSleepTime();
     }
 
@@ -155,18 +158,4 @@
 
     /**
-     * @param suppressor the suppressor to set
-     */
-    public void setSuppressor(ILiveGpsSuppressor suppressor) {
-        this.suppressor = suppressor;
-    }
-
-    /**
-     * @return the suppressor
-     */
-    public ILiveGpsSuppressor getSuppressor() {
-        return suppressor;
-    }
-
-    /**
      * Check, if a redraw is currently allowed.
      *
@@ -175,9 +164,30 @@
      */
     private boolean allowRedraw() {
-        if (this.suppressor != null) {
-            return this.suppressor.isAllowUpdate();
-        } else {
-            return true;
+	Date date = new Date();
+	long current = date.getTime();
+
+	if (current - lastUpdate >= sleepTime) {
+		lastUpdate = current;
+		return true;
+	} else
+		return false;
+    }
+
+    /**
+     * Retrieve the sleepTime from the configuration. Be compatible with old
+     * version that stored value in seconds. If no such configuration key exists,
+     * it will be initialized here.
+     */
+    private void initSleepTime() {
+        if ((sleepTime = Main.pref.getInteger(ConfigKey, 0)) == 0) {
+                if ((sleepTime = Main.pref.getInteger(oldConfigKey, 0)) != 0) {
+                        sleepTime *= 1000;
+                        Main.pref.put(oldConfigKey, null);
+                } else
+                        sleepTime = DEFAULT_SLEEP_TIME;
         }
+
+        // creates the setting, if none present.
+        Main.pref.putInteger(ConfigKey, sleepTime);
     }
 }
Index: /applications/editors/josm/plugins/livegps/src/livegps/LiveGpsPlugin.java
===================================================================
--- /applications/editors/josm/plugins/livegps/src/livegps/LiveGpsPlugin.java	(revision 25796)
+++ /applications/editors/josm/plugins/livegps/src/livegps/LiveGpsPlugin.java	(revision 25797)
@@ -39,14 +39,4 @@
     private LiveGpsLayer lgpslayer = null;
 
-    /**
-     * The LiveGpsSuppressor is queried, if an event shall be suppressed.
-     */
-    private LiveGpsSuppressor suppressor = null;
-
-    /**
-     * separate thread, where the LiveGpsSuppressor executes.
-     */
-    private Thread suppressorThread;
-
     public class CaptureAction extends JosmAction {
         public CaptureAction() {
@@ -165,11 +155,6 @@
 	
         if (enable && !enabled) {
-            assert (suppressor == null);
-            assert (suppressorThread == null);
             assert (acquirer == null);
             assert (acquirerThread == null);
-
-            suppressor = new LiveGpsSuppressor();
-            suppressorThread = new Thread(suppressor);
 
             acquirer = new LiveGpsAcquirer();
@@ -183,9 +168,7 @@
 	    }
 
-            lgpslayer.setSuppressor(suppressor);
             acquirer.addPropertyChangeListener(lgpslayer);
             acquirer.addPropertyChangeListener(lgpsdialog);
 
-            suppressorThread.start();
             acquirerThread.start();
 
@@ -194,6 +177,4 @@
         } else if (!enable && enabled) {
 	    assert (lgpslayer != null);
-            assert (suppressor != null);
-            assert (suppressorThread != null);
             assert (acquirer != null);
             assert (acquirerThread != null);
@@ -202,10 +183,4 @@
 	    acquirer = null;
 	    acquirerThread = null;
-
-            suppressor.shutdown();
-            suppressor = null;
-            suppressorThread = null;
-
-            lgpslayer.setSuppressor(null);
 
 	    enabled = false;
Index: plications/editors/josm/plugins/livegps/src/livegps/LiveGpsSuppressor.java
===================================================================
--- /applications/editors/josm/plugins/livegps/src/livegps/LiveGpsSuppressor.java	(revision 25796)
+++ 	(revision )
@@ -1,136 +1,0 @@
-package livegps;
-
-import org.openstreetmap.josm.Main;
-
-/**
- * The LiveGpsSuppressor permits update events only once within a given timespan.
- * This is useful, when too frequent updates consume large parts of the CPU resources (esp.
- * on low-end devices, such as netbooks).
- *
- * Its own thread wakes up after the sleepTime and enables the allowUpdate flag.
- * When another thread (the LiveGpsAcquirere) "asks for permission",
- * the first call is permitted, but it also disables the updates for the following calls,
- * until the sleepTime has elapsed.
- *
- * @author casualwalker
- *
- */
-public class LiveGpsSuppressor implements Runnable, ILiveGpsSuppressor {
-
-    /**
-     * Default sleep time is 0.5 seconds.
-     */
-    private static final int DEFAULT_SLEEP_TIME = 500;
-    private static final String oldConfigKey = "livegps.refreshinterval";     /* in seconds */
-    private static final String ConfigKey = "livegps.refresh_interval_msec";  /* in msec */
-    private int sleepTime;
-
-    /**
-     * The flag allowUpdate is enabled once during the sleepTime.
-     */
-    private boolean allowUpdate = false;
-
-    /**
-     * Controls if this thread is still in used.
-     */
-    private boolean shutdownFlag = false;
-
-    /**
-     * Run thread enables the allowUpdate flag once during its cycle.
-     * @see java.lang.Runnable#run()
-     */
-    public void run() {
-        initSleepTime();
-
-        shutdownFlag = false;
-        // stop the thread, when explicitely shut down or when disabled by
-        // config setting
-        while (!shutdownFlag && isEnabled()) {
-            setAllowUpdate(true);
-
-            try {
-                Thread.sleep(getSleepTime());
-            } catch (InterruptedException e) {
-                // TODO I never knew, how to handle this??? Probably just carry
-                // on
-            }
-        }
-
-    }
-
-    /**
-     * Retrieve the sleepTime from the configuration. Be compatible with old
-     * version that stored value in seconds. If no such configuration key exists,
-     * it will be initialized here.
-     */
-    private void initSleepTime() {
-        if ((this.sleepTime = Main.pref.getInteger(ConfigKey, 0)) == 0) {
-		if ((this.sleepTime = Main.pref.getInteger(oldConfigKey, 0)) != 0) {
-			this.sleepTime *= 1000;
-			Main.pref.put(oldConfigKey, null);
-		} else
-			this.sleepTime = DEFAULT_SLEEP_TIME;
-	}
-
-        // creates the setting, if none present.
-        Main.pref.putInteger(ConfigKey, this.sleepTime);
-    }
-
-    /**
-     * Set the allowUpdate flag. May only privately accessible!
-     * @param allowUpdate the allowUpdate to set
-     */
-    private synchronized void setAllowUpdate(boolean allowUpdate) {
-        this.allowUpdate = allowUpdate;
-    }
-
-    /**
-     * Query, if an update is currently allowed.
-     * When it is allowed, it will disable the allowUpdate flag as a side effect.
-     * (this means, one thread got to issue an update event)
-     *
-     * @return true, if an update is currently allowed; false, if the update shall be suppressed.
-     * @see livegps.ILiveGpsSuppressor#isAllowUpdate()
-     */
-    public synchronized boolean isAllowUpdate() {
-
-        // if disabled, always permit a re-draw.
-        if (!isEnabled()) {
-            return true;
-        } else {
-
-            if (allowUpdate) {
-                allowUpdate = false;
-                return true;
-            } else {
-                return false;
-            }
-        }
-    }
-
-    /**
-     * A value below 1 disables this feature.
-     * This ensures that a small value does not run this thread
-     * in a tight loop.
-     *
-     * @return true, if suppressing is enabled
-     */
-    private boolean isEnabled() {
-        return this.sleepTime > 0;
-    }
-
-    /**
-     * Shut this thread down.
-     */
-    public void shutdown() {
-        shutdownFlag = true;
-    }
-
-    /**
-     * @return the defaultSleepTime
-     */
-    private int getSleepTime() {
-        return this.sleepTime;
-    }
-
-}
