diff options
author | Lokesh <l.kasana@samsung.com> | 2019-07-18 11:52:01 +0530 |
---|---|---|
committer | saerome.kim <saerome.kim@samsung.com> | 2019-07-18 16:06:21 +0900 |
commit | bfccffab190ab11a923682311ea8c0b34176560a (patch) | |
tree | 2194779bb77ce4461e3ad1a0153c6e044dd9b6d0 | |
parent | faa6377d636244ec0b528dbd185703b8fd072462 (diff) | |
download | user-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.c | 18 |
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; |