From c4d93ba55fbe905fa72ee7a068efd7c5fb4e8257 Mon Sep 17 00:00:00 2001 From: Steve Block Date: Wed, 3 Aug 2011 14:03:24 +0100 Subject: Cherry-pick DeviceMotionService CL from master [do not merge] In DeviceMotionService, handle the fact that we may receive updates from SensorManager after unregistering. cherry-pick of Change: d09001fea476ca6c6eaff5e29a1bb6f3aebe5bd5 Bug: 5110230 Change-Id: Id1d1f51b445ce4a14bfcdfad8f173922e01b6563 --- core/java/android/webkit/DeviceMotionService.java | 6 ++++++ core/java/android/webkit/DeviceOrientationService.java | 1 + 2 files changed, 7 insertions(+) diff --git a/core/java/android/webkit/DeviceMotionService.java b/core/java/android/webkit/DeviceMotionService.java index 7d7a0f05e36e..b4d5759dcb9a 100755 --- a/core/java/android/webkit/DeviceMotionService.java +++ b/core/java/android/webkit/DeviceMotionService.java @@ -99,6 +99,7 @@ final class DeviceMotionService implements SensorEventListener { mUpdateRunnable = new Runnable() { @Override public void run() { + assert mIsRunning; mManager.onMotionChange(new Double(mLastAcceleration[0]), new Double(mLastAcceleration[1]), new Double(mLastAcceleration[2]), INTERVAL_MILLIS); @@ -157,6 +158,11 @@ final class DeviceMotionService implements SensorEventListener { assert WebViewCore.THREAD_NAME.equals(Thread.currentThread().getName()); assert(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER); + // We may get callbacks after the call to getSensorManager().unregisterListener() returns. + if (!mIsRunning) { + return; + } + boolean firstData = mLastAcceleration == null; mLastAcceleration = event.values; if (firstData) { diff --git a/core/java/android/webkit/DeviceOrientationService.java b/core/java/android/webkit/DeviceOrientationService.java index f3c057627a22..47c8ab79b918 100755 --- a/core/java/android/webkit/DeviceOrientationService.java +++ b/core/java/android/webkit/DeviceOrientationService.java @@ -188,6 +188,7 @@ final class DeviceOrientationService implements SensorEventListener { assert(event.values.length == 3); assert WebViewCore.THREAD_NAME.equals(Thread.currentThread().getName()); + // We may get callbacks after the call to getSensorManager().unregisterListener() returns. if (!mIsRunning) { return; } -- cgit v1.2.3-59-g8ed1b