aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Tardieu <sam@rfc1149.net>2013-08-25 13:54:18 +0200
committerSamuel Tardieu <sam@rfc1149.net>2013-08-25 13:54:18 +0200
commit55844edaf8351d0ca3134213e997428402174513 (patch)
tree629c9f3f2cae53eeb7c0bf804af6f95f77f9af0c
parent86395ae7776b1803d4d333a6b4368df218638889 (diff)
downloadcgeo-55844edaf8351d0ca3134213e997428402174513.zip
cgeo-55844edaf8351d0ca3134213e997428402174513.tar.gz
cgeo-55844edaf8351d0ca3134213e997428402174513.tar.bz2
fix #3185: NPE in GeoDirHandler
One must not unconditionnally update geolocation and direction data as it may be null. This is a more correct fix for #2717.
-rw-r--r--main/src/cgeo/geocaching/CompassActivity.java11
-rw-r--r--main/src/cgeo/geocaching/utils/GeoDirHandler.java5
2 files changed, 10 insertions, 6 deletions
diff --git a/main/src/cgeo/geocaching/CompassActivity.java b/main/src/cgeo/geocaching/CompassActivity.java
index 64be52d..909f8bb 100644
--- a/main/src/cgeo/geocaching/CompassActivity.java
+++ b/main/src/cgeo/geocaching/CompassActivity.java
@@ -134,7 +134,16 @@ public class CompassActivity extends AbstractActivity {
setDestCoords();
setCacheInfo();
- geoDirHandler.updateAll();
+ // Force a refresh of location and direction when data is available.
+ final cgeoapplication app = cgeoapplication.getInstance();
+ final IGeoData geo = app.currentGeo();
+ if (geo != null) {
+ geoDirHandler.update(geo);
+ }
+ final Float dir = app.currentDirection();
+ if (dir != null) {
+ geoDirHandler.update(dir);
+ }
}
@Override
diff --git a/main/src/cgeo/geocaching/utils/GeoDirHandler.java b/main/src/cgeo/geocaching/utils/GeoDirHandler.java
index 14e6426..a143730 100644
--- a/main/src/cgeo/geocaching/utils/GeoDirHandler.java
+++ b/main/src/cgeo/geocaching/utils/GeoDirHandler.java
@@ -63,11 +63,6 @@ public abstract class GeoDirHandler extends Handler implements IObserver<Object>
obtainMessage(OBSERVABLE, o).sendToTarget();
}
- public void updateAll() {
- update(app.currentGeo());
- update(app.currentDirection());
- }
-
/**
* Update method called when new IGeoData is available.
*