summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authorIvan Solovev <ivan.solovev@qt.io>2021-07-02 13:56:15 +0200
committerIvan Solovev <ivan.solovev@qt.io>2021-07-14 14:58:05 +0200
commit6015afc28d828466c8fc9f783ff9ac63f7579e71 (patch)
tree1be1125b2dda92216b81a2a0376f0b52832dde35 /src/plugins
parent6ca90ba2f8b654c21768ffd7311a3d32396a674b (diff)
downloadqtlocation-6015afc28d828466c8fc9f783ff9ac63f7579e71.tar.gz
QtPositioning: fix provider disabled notifications
When starting the location updates, we register the same location listener for multiple location providers (GPS & network). As a result, the onProviderDisabled() callback is called multiple times, and we might report too many "Closed" errors. This patch fixes the logic by introducing an additional flag to track that the native C++ callback was already invoked. Drive-by: fix some code formatting. Pick-to: 6.2 Change-Id: Ie8e93ae77eb1c9cf9044bf3a35b22c37e9f2a8aa Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/position/android/jar/src/org/qtproject/qt/android/positioning/QtPositioning.java18
1 files changed, 12 insertions, 6 deletions
diff --git a/src/plugins/position/android/jar/src/org/qtproject/qt/android/positioning/QtPositioning.java b/src/plugins/position/android/jar/src/org/qtproject/qt/android/positioning/QtPositioning.java
index b9a39807..b1726c53 100644
--- a/src/plugins/position/android/jar/src/org/qtproject/qt/android/positioning/QtPositioning.java
+++ b/src/plugins/position/android/jar/src/org/qtproject/qt/android/positioning/QtPositioning.java
@@ -99,6 +99,8 @@ public class QtPositioning implements LocationListener
private PositioningLooper looperThread;
+ private boolean isLocationProvidersDisabledInvoked = false;
+
static public void setContext(Context context)
{
try {
@@ -255,8 +257,8 @@ public class QtPositioning implements LocationListener
Log.d(TAG, "Regular updates using GPS " + updateInterval);
try {
addActiveListener(positioningListener,
- LocationManager.GPS_PROVIDER,
- updateInterval, 0);
+ LocationManager.GPS_PROVIDER,
+ updateInterval, 0);
} catch (SecurityException se) {
se.printStackTrace();
exceptionOccurred = true;
@@ -267,8 +269,8 @@ public class QtPositioning implements LocationListener
Log.d(TAG, "Regular updates using network " + updateInterval);
try {
addActiveListener(positioningListener,
- LocationManager.NETWORK_PROVIDER,
- updateInterval, 0);
+ LocationManager.NETWORK_PROVIDER,
+ updateInterval, 0);
} catch (SecurityException se) {
se.printStackTrace();
exceptionOccurred = true;
@@ -376,7 +378,7 @@ public class QtPositioning implements LocationListener
Log.d(TAG, "Regular updates for Satellites " + updateInterval);
try {
addActiveListener(positioningListener, LocationManager.GPS_PROVIDER,
- updateInterval, 0);
+ updateInterval, 0);
} catch (SecurityException se) {
se.printStackTrace();
exceptionOccurred = true;
@@ -578,13 +580,17 @@ public class QtPositioning implements LocationListener
public void onProviderEnabled(String provider) {
Log.d(TAG, "Enabled provider: " + provider);
locationProvidersChanged(nativeClassReference);
+ if (isLocationProvidersDisabledInvoked && expectedProvidersAvailable(expectedProviders))
+ isLocationProvidersDisabledInvoked = false;
}
@Override
public void onProviderDisabled(String provider) {
Log.d(TAG, "Disabled provider: " + provider);
locationProvidersChanged(nativeClassReference);
- if (!expectedProvidersAvailable(expectedProviders))
+ if (!isLocationProvidersDisabledInvoked && !expectedProvidersAvailable(expectedProviders)) {
+ isLocationProvidersDisabledInvoked = true;
locationProvidersDisabled(nativeClassReference);
+ }
}
}