summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--navit/vehicle/gpsd/vehicle_gpsd.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/navit/vehicle/gpsd/vehicle_gpsd.c b/navit/vehicle/gpsd/vehicle_gpsd.c
index f7f5616f9..73d9e648d 100644
--- a/navit/vehicle/gpsd/vehicle_gpsd.c
+++ b/navit/vehicle/gpsd/vehicle_gpsd.c
@@ -318,7 +318,11 @@ vehicle_gpsd_io(struct vehicle_priv *priv)
if (priv->gps) {
vehicle_last = priv;
#if GPSD_API_MAJOR_VERSION >= 5
- if(gps_read(priv->gps)==-1) {
+ int read_result;
+ /* Read until EOF, in case we are lagging behind.
+ * No point in processing old GPS reports. */
+ while((read_result=gps_read(priv->gps))>0);
+ if(read_result==-1) {
dbg(lvl_error,"gps_poll failed\n");
vehicle_gpsd_close(priv);
vehicle_gpsd_open(priv);