Fix FusionEngine so it isn't confused by location providers enabling/disabling.

Bug: 18900529
Change-Id: I80ebf9e0482148897eb943b44bf711577b6dcf7a
This commit is contained in:
Soonil Nagarkar
2015-01-28 16:51:25 -08:00
parent 8bd95f1623
commit 55fc40cbb7

View File

@@ -97,14 +97,18 @@ public class FusionEngine implements LocationListener {
/** Called on mLooper thread */
public void enable() {
mEnabled = true;
updateRequirements();
if (!mEnabled) {
mEnabled = true;
updateRequirements();
}
}
/** Called on mLooper thread */
public void disable() {
mEnabled = false;
updateRequirements();
if (mEnabled) {
mEnabled = false;
updateRequirements();
}
}
/** Called on mLooper thread */
@@ -131,16 +135,14 @@ public class FusionEngine implements LocationListener {
private void enableProvider(String name, long minTime) {
ProviderStats stats = mStats.get(name);
if (stats.available) {
if (!stats.requested) {
stats.requestTime = SystemClock.elapsedRealtime();
stats.requested = true;
stats.minTime = minTime;
mLocationManager.requestLocationUpdates(name, minTime, 0, this, mLooper);
} else if (stats.minTime != minTime) {
stats.minTime = minTime;
mLocationManager.requestLocationUpdates(name, minTime, 0, this, mLooper);
}
if (!stats.requested) {
stats.requestTime = SystemClock.elapsedRealtime();
stats.requested = true;
stats.minTime = minTime;
mLocationManager.requestLocationUpdates(name, minTime, 0, this, mLooper);
} else if (stats.minTime != minTime) {
stats.minTime = minTime;
mLocationManager.requestLocationUpdates(name, minTime, 0, this, mLooper);
}
}