[HAM] - fixing pedometer listeners 19/107519/1
authorAndrzej Popowski <a.popowski@samsung.com>
Wed, 28 Dec 2016 10:12:47 +0000 (11:12 +0100)
committerAndrzej Popowski <a.popowski@samsung.com>
Wed, 28 Dec 2016 10:12:47 +0000 (11:12 +0100)
Change-Id: Ia9acbdb41e269ded7e246d08948c9556c30f6735
Signed-off-by: Andrzej Popowski <a.popowski@samsung.com>
src/humanactivitymonitor/humanactivitymonitor_api.js

index 2d2d65e1c7172665684ae15ebad506e570a6de32..5c36b72bd4186b1281cdc59cb8b001c42fdf0d38 100755 (executable)
@@ -354,12 +354,17 @@ HumanActivityMonitorManager.prototype.stop = function(type) {
     {name: 'type', type: types_.ENUM, values: Object.keys(HumanActivityType)}
   ]);
 
-  stopListener('HumanActivityMonitor_'  + args.type,
-               'HumanActivityMonitorManager_stop',
-               { type: args.type });
-
   if (HumanActivityType.PEDOMETER === args.type) {
+    if (pedometerListener && !accumulativePedometerListener) {
+      stopListener('HumanActivityMonitor_PEDOMETER',
+                   'HumanActivityMonitorManager_stop',
+                   { type: HumanActivityType.PEDOMETER });
+    }
     pedometerListener = null;
+  } else {
+    stopListener('HumanActivityMonitor_'  + args.type,
+                 'HumanActivityMonitorManager_stop',
+                 { type: args.type });
   }
 
   if (HumanActivityType.GPS === args.type) {
@@ -382,13 +387,12 @@ HumanActivityMonitorManager.prototype.setAccumulativePedometerListener = functio
 };
 
 HumanActivityMonitorManager.prototype.unsetAccumulativePedometerListener = function() {
-  var oldPedometerListener = pedometerListener;
-
-  // calling stop() will overwrite pedometerListener, needs to be restored afterwards
-  this.stop(HumanActivityType.PEDOMETER);
-
+  if (accumulativePedometerListener && !pedometerListener) {
+    stopListener('HumanActivityMonitor_PEDOMETER',
+                 'HumanActivityMonitorManager_stop',
+                 { type: HumanActivityType.PEDOMETER });
+  }
   accumulativePedometerListener = null;
-  pedometerListener = oldPedometerListener;
 };