summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/hardware/SystemSensorManager.java10
1 files changed, 8 insertions, 2 deletions
diff --git a/core/java/android/hardware/SystemSensorManager.java b/core/java/android/hardware/SystemSensorManager.java
index 10c4cb3df89c..f5ad5cc63a12 100644
--- a/core/java/android/hardware/SystemSensorManager.java
+++ b/core/java/android/hardware/SystemSensorManager.java
@@ -322,7 +322,10 @@ public class SystemSensorManager extends SensorManager {
if (sensor.getReportingMode() == Sensor.REPORTING_MODE_ONE_SHOT) {
synchronized(mTriggerListeners) {
- for (TriggerEventListener l: mTriggerListeners.keySet()) {
+ HashMap<TriggerEventListener, TriggerEventQueue> triggerListeners =
+ new HashMap<TriggerEventListener, TriggerEventQueue>(mTriggerListeners);
+
+ for (TriggerEventListener l: triggerListeners.keySet()) {
if (DEBUG_DYNAMIC_SENSOR){
Log.i(TAG, "removed trigger listener" + l.toString() +
" due to sensor disconnection");
@@ -332,7 +335,10 @@ public class SystemSensorManager extends SensorManager {
}
} else {
synchronized(mSensorListeners) {
- for (SensorEventListener l: mSensorListeners.keySet()) {
+ HashMap<SensorEventListener, SensorEventQueue> sensorListeners =
+ new HashMap<SensorEventListener, SensorEventQueue>(mSensorListeners);
+
+ for (SensorEventListener l: sensorListeners.keySet()) {
if (DEBUG_DYNAMIC_SENSOR){
Log.i(TAG, "removed event listener" + l.toString() +
" due to sensor disconnection");