summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--location/java/com/android/internal/location/GpsLocationProvider.java10
1 files changed, 8 insertions, 2 deletions
diff --git a/location/java/com/android/internal/location/GpsLocationProvider.java b/location/java/com/android/internal/location/GpsLocationProvider.java
index 887574a..f595050 100644
--- a/location/java/com/android/internal/location/GpsLocationProvider.java
+++ b/location/java/com/android/internal/location/GpsLocationProvider.java
@@ -412,6 +412,12 @@ public class GpsLocationProvider extends LocationProviderImpl {
mNetworkThread = null;
}
+ // The GpsEventThread does not wait for the GPS to shutdown
+ // so we need to report the GPS_STATUS_ENGINE_OFF event here
+ if (mNavigating) {
+ reportStatus(GPS_STATUS_ENGINE_OFF);
+ }
+
native_cleanup();
}
@@ -797,8 +803,8 @@ public class GpsLocationProvider extends LocationProviderImpl {
public void run() {
if (Config.LOGD) Log.d(TAG, "GpsEventThread starting");
- // thread exits after disable() is called and navigation has stopped
- while (mEnabled || mNavigating) {
+ // Exit as soon as disable() is called instead of waiting for the GPS to stop.
+ while (mEnabled) {
// this will wait for an event from the GPS,
// which will be reported via reportLocation or reportStatus
native_wait_for_event();