summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLokesh <l.kasana@samsung.com>2019-07-18 11:52:01 +0530
committersaerome.kim <saerome.kim@samsung.com>2019-07-18 16:06:21 +0900
commitbfccffab190ab11a923682311ea8c0b34176560a (patch)
tree2194779bb77ce4461e3ad1a0153c6e044dd9b6d0
parentfaa6377d636244ec0b528dbd185703b8fd072462 (diff)
downloaduser-awareness-bfccffab190ab11a923682311ea8c0b34176560a.tar.gz
user-awareness-bfccffab190ab11a923682311ea8c0b34176560a.tar.bz2
user-awareness-bfccffab190ab11a923682311ea8c0b34176560a.zip
[Fix] Avoid duplicate entries in monitor->user_state
1) Avoid duplicate entries in case account was matched but 'user_state->sensor_bitmask' didn't matched. 2) Check 'user_state->sensor_bitmask == 0' before calling presence_user_cb to confirm that we have not recorded any presence of this user before. Change-Id: Iee8682ffabe4db17c1d4688ba3054301e34b570d Signed-off-by: Lokesh <l.kasana@samsung.com>
-rw-r--r--src/user-awareness-monitors.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/user-awareness-monitors.c b/src/user-awareness-monitors.c
index 842b953..1708aef 100644
--- a/src/user-awareness-monitors.c
+++ b/src/user-awareness-monitors.c
@@ -843,8 +843,7 @@ static void __ua_sensor_presence_detected(ua_monitor_s *monitor, unsigned int bi
user_state = (ua_user_state_info_s *)l->data;
UA_DBG("user_state->account [%s] account [%s]", user_state->account, account);
- if (!g_strcmp0(account, user_state->account)
- && user_state->sensor_bitmask != 0) {
+ if (!g_strcmp0(account, user_state->account)) {
UA_DBG("Found!!");
found = 1;
break;
@@ -859,15 +858,16 @@ static void __ua_sensor_presence_detected(ua_monitor_s *monitor, unsigned int bi
}
monitor->user_state = g_slist_append(monitor->user_state, user_state);
+ }
- if (monitor->presence_user_cb.callback && monitor->presence_detection_started) {
- ua_user_h user_handle = _ua_get_user_handle_by_account(user_state->account);
+ if (user_state->sensor_bitmask == 0 && monitor->presence_user_cb.callback
+ && monitor->presence_detection_started) {
+ ua_user_h user_handle = _ua_get_user_handle_by_account(user_state->account);
- if (user_handle)
- ((ua_presence_user_detected_cb)monitor->presence_user_cb.callback)(
- UA_ERROR_NONE, monitor, user_handle,
- monitor->presence_user_cb.user_data);
- }
+ if (user_handle)
+ ((ua_presence_user_detected_cb)monitor->presence_user_cb.callback)(
+ UA_ERROR_NONE, monitor, user_handle,
+ monitor->presence_user_cb.user_data);
}
user_state->sensor_bitmask |= bitmask;