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

Commit 080b61ba authored by Joshua Bartel's avatar Joshua Bartel Committed by Mike Lockwood
Browse files

LocationManagerService: Fix race when removing LocationListener



In LocationManagerService if a LocationListener is removed while it has
a pending broadcast the wake lock held while pending broadcasts are
outstanding do not get cleared properly.

There are 2 cases of this race that are fixed:

1. locationCallbackFinished was changed to check the mReceivers HashMap
directly instead of calling getReceiver.  getReceiver would add the
ILocationListener as a new Receiver if it did not exist which caused
a receiver that was removed when it still had a broadcast pending to
be added back in a bad state when the pending broadcast completed.

2. removeUpdatesLocked was changed to decrement the pending broadcasts
when a Receiver is removed that has pending broadcasts.

Fixes bug b/2163871

Change-Id: I50a321c9b3359bf69845236dc4a4b9e38e847335
Signed-off-by: default avatarMike Lockwood <lockwood@android.com>
parent 7c12540f
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment