Merge recent changes
[gigfinder] / src / opt / gigfinder / locator.py
index 089a822..e562e8d 100644 (file)
@@ -7,10 +7,13 @@ class LocationUpdater:
         self.lat = None
         self.long = None
         self.loop = gobject.MainLoop()
+        self.fix_count = 0
 
         self.control = location.GPSDControl.get_default()
-        self.control.set_properties(preferred_method=location.METHOD_AGNSS,
-                               preferred_interval=location.INTERVAL_DEFAULT)
+        self.control.set_properties(preferred_method=location\
+                                            .METHOD_USER_SELECTED,
+                                    preferred_interval=location\
+                                            .INTERVAL_DEFAULT)
         self.control.connect("error-verbose", self.on_error, self.loop)
         self.control.connect("gpsd-stopped", self.on_stop, self.loop)
 
@@ -35,8 +38,10 @@ class LocationUpdater:
         if device.fix:
             # once fix is found and long, lat available set long lat
             if device.fix[1] & location.GPS_DEVICE_LATLONG_SET:
-                self.lat, self.long = device.fix[4:6]
-                data.stop()
+                self.fix_count += 1
+                if self.fix_count > 1:
+                    self.lat, self.long = device.fix[4:6]
+                    data.stop()
 
     def on_stop(self, control, data):
         """ Stop the location service """
@@ -45,6 +50,7 @@ class LocationUpdater:
 
     def start_location(self, data):
         """ Start the location service """
+        self.fix_count = 0
         data.start()
         return False