--- src/plugins/positionprovider/gpsd/GpsdPositionProviderPlugin.cpp.orig 2021-01-30 23:58:55.000000000 +0900 +++ src/plugins/positionprovider/gpsd/GpsdPositionProviderPlugin.cpp 2021-01-31 00:20:50.000000000 +0900 @@ -78,7 +78,11 @@ { PositionProviderStatus oldStatus = m_status; GeoDataCoordinates oldPosition = m_position; +#if defined( GPSD_API_MAJOR_VERSION ) && ( GPSD_API_MAJOR_VERSION >= 10 ) + if ( data.fix.status == STATUS_NO_FIX || isnan( data.fix.longitude ) || isnan( data.fix.latitude ) ) +#else if ( data.status == STATUS_NO_FIX || isnan( data.fix.longitude ) || isnan( data.fix.latitude ) ) +#endif m_status = PositionProviderStatusUnavailable; else { m_status = PositionProviderStatusAvailable; @@ -111,10 +115,17 @@ { m_track = data.fix.track; } - +#if defined( GPSD_API_MAJOR_VERSION ) && ( GPSD_API_MAJOR_VERSION >= 9 ) + if ( !isnan( data.fix.time.tv_sec ) ) +#else if ( !isnan( data.fix.time ) ) +#endif { +#if defined( GPSD_API_MAJOR_VERSION ) && ( GPSD_API_MAJOR_VERSION >= 9 ) + m_timestamp = QDateTime::fromMSecsSinceEpoch( data.fix.time.tv_sec * 1000 + data.fix.time.tv_nsec / 1000000 ); +#else m_timestamp = QDateTime::fromMSecsSinceEpoch( data.fix.time * 1000 ); +#endif } } if (m_status != oldStatus)