diff options
Diffstat (limited to 'main/src/cgeo/geocaching/sensors')
-rw-r--r-- | main/src/cgeo/geocaching/sensors/GeoDirHandler.java | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/main/src/cgeo/geocaching/sensors/GeoDirHandler.java b/main/src/cgeo/geocaching/sensors/GeoDirHandler.java index 69297af..d043a4a 100644 --- a/main/src/cgeo/geocaching/sensors/GeoDirHandler.java +++ b/main/src/cgeo/geocaching/sensors/GeoDirHandler.java @@ -125,12 +125,13 @@ public abstract class GeoDirHandler { })); } if ((flags & UPDATE_GEODIR) != 0) { + // combineOnLatest() does not implement backpressure handling, so we need to explicitely use a backpressure operator there. subscriptions.add(throttleIfNeeded(Observable.combineLatest(app.geoDataObservable(lowPower), app.directionObservable(), new Func2<GeoData, Float, ImmutablePair<GeoData, Float>>() { @Override public ImmutablePair<GeoData, Float> call(final GeoData geoData, final Float direction) { return ImmutablePair.of(geoData, fixDirection(geoData, direction)); } - }), windowDuration, unit).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<ImmutablePair<GeoData, Float>>() { + }), windowDuration, unit).onBackpressureDrop().observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<ImmutablePair<GeoData, Float>>() { @Override public void call(final ImmutablePair<GeoData, Float> geoDir) { updateGeoDir(geoDir.left, geoDir.right); |