--- 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)
