Merge "Fix deadlock for system location clients" into rvc-dev

This commit is contained in:
TreeHugger Robot
2020-06-11 21:49:06 +00:00
committed by Android (Google) Code Review

View File

@@ -2583,9 +2583,15 @@ public class LocationManager {
} }
public void cancel() { public void cancel() {
remove();
}
private Consumer<Location> remove() {
Consumer<Location> consumer;
ICancellationSignal cancellationSignal; ICancellationSignal cancellationSignal;
synchronized (this) { synchronized (this) {
mExecutor = null; mExecutor = null;
consumer = mConsumer;
mConsumer = null; mConsumer = null;
if (mAlarmManager != null) { if (mAlarmManager != null) {
@@ -2605,6 +2611,8 @@ public class LocationManager {
// ignore // ignore
} }
} }
return consumer;
} }
public void fail() { public void fail() {
@@ -2663,16 +2671,10 @@ public class LocationManager {
} }
private void acceptResult(Location location) { private void acceptResult(Location location) {
Consumer<Location> consumer; Consumer<Location> consumer = remove();
synchronized (this) { if (consumer != null) {
if (mConsumer == null) { consumer.accept(location);
return;
}
consumer = mConsumer;
cancel();
} }
consumer.accept(location);
} }
} }