Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 685cc8c7 authored by Laurent Tu's avatar Laurent Tu Committed by Android (Google) Code Review
Browse files

Merge "Decrement number of updates in LocationRequest" into jb-mr1-dev

parents 8ae0420e 75defb6f
Loading
Loading
Loading
Loading
+16 −4
Original line number Diff line number Diff line
@@ -1540,7 +1540,8 @@ public class LocationManagerService extends ILocationManager.Stub implements Run
    }


    private static boolean shouldBroadcastSafe(Location loc, Location lastLoc, UpdateRecord record) {
    private static boolean shouldBroadcastSafe(
            Location loc, Location lastLoc, UpdateRecord record, long now) {
        // Always broadcast the first update
        if (lastLoc == null) {
            return true;
@@ -1561,6 +1562,16 @@ public class LocationManagerService extends ILocationManager.Stub implements Run
            }
        }

        // Check whether sufficient number of udpates is left
        if (record.mRequest.getNumUpdates() <= 0) {
            return false;
        }

        // Check whether the expiry date has passed
        if (record.mRequest.getExpireAt() < now) {
            return false;
        }

        return true;
    }

@@ -1640,7 +1651,7 @@ public class LocationManagerService extends ILocationManager.Stub implements Run
            }
            if (notifyLocation != null) {
                Location lastLoc = r.mLastFixBroadcast;
                if ((lastLoc == null) || shouldBroadcastSafe(notifyLocation, lastLoc, r)) {
                if ((lastLoc == null) || shouldBroadcastSafe(notifyLocation, lastLoc, r, now)) {
                    if (lastLoc == null) {
                        lastLoc = new Location(notifyLocation);
                        r.mLastFixBroadcast = lastLoc;
@@ -1651,6 +1662,7 @@ public class LocationManagerService extends ILocationManager.Stub implements Run
                        Slog.w(TAG, "RemoteException calling onLocationChanged on " + receiver);
                        receiverDead = true;
                    }
                    r.mRequest.decrementNumUpdates();
                }
            }

@@ -1666,7 +1678,7 @@ public class LocationManagerService extends ILocationManager.Stub implements Run
            }

            // track expired records
            if (r.mRequest.getNumUpdates() == 0 || r.mRequest.getExpireAt() < now) {
            if (r.mRequest.getNumUpdates() <= 0 || r.mRequest.getExpireAt() < now) {
                if (deadUpdateRecords == null) {
                    deadUpdateRecords = new ArrayList<UpdateRecord>();
                }