diff options
-rw-r--r-- | navit/vehicle/gpsd/vehicle_gpsd.c | 6 |
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); |