Ensure complete GnssStatus construction
Using volatile reference & final member pattern. Bug: 37517406 Test: basic GNSS & GPS Status output works Change-Id: I5650149e0a3f63a52734c8f044d38f3956819921
This commit is contained in:
@@ -74,7 +74,8 @@ public class LocationManager {
|
||||
new HashMap<>();
|
||||
private final HashMap<OnNmeaMessageListener, GnssStatusListenerTransport> mGnssNmeaListeners =
|
||||
new HashMap<>();
|
||||
private GnssStatus mGnssStatus;
|
||||
// volatile + GnssStatus final-fields pattern to avoid a partially published object
|
||||
private volatile GnssStatus mGnssStatus;
|
||||
private int mTimeToFirstFix;
|
||||
|
||||
/**
|
||||
@@ -1563,7 +1564,7 @@ public class LocationManager {
|
||||
float[] cn0s, float[] elevations, float[] azimuths, float[] carrierFreqs) {
|
||||
if (mGnssCallback != null) {
|
||||
mGnssStatus = new GnssStatus(svCount, prnWithFlags, cn0s, elevations, azimuths,
|
||||
carrierFreqs);
|
||||
carrierFreqs);
|
||||
|
||||
Message msg = Message.obtain();
|
||||
msg.what = GpsStatus.GPS_EVENT_SATELLITE_STATUS;
|
||||
@@ -1949,7 +1950,7 @@ public class LocationManager {
|
||||
status = new GpsStatus();
|
||||
}
|
||||
// When mGnssStatus is null, that means that this method is called outside
|
||||
// onGpsStatusChanged(). Return an empty status to maintain backwards compatibility.
|
||||
// onGpsStatusChanged(). Return an empty status to maintain backwards compatibility.
|
||||
if (mGnssStatus != null) {
|
||||
status.setStatus(mGnssStatus, mTimeToFirstFix);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user