summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbhay agarwal <ay.agarwal@samsung.com>2019-10-23 18:45:01 +0530
committersaerome.kim <saerome.kim@samsung.com>2019-11-01 12:49:35 +0900
commit9457689a16339870bb082ff65aebe89ff6be30cd (patch)
treefead4eb11e171650a51828b0a573ed03e5a92fa0
parent8462d2b4cdc8145b93f7651617fb540e7851d86a (diff)
downloaduser-awareness-9457689a16339870bb082ff65aebe89ff6be30cd.tar.gz
user-awareness-9457689a16339870bb082ff65aebe89ff6be30cd.tar.bz2
user-awareness-9457689a16339870bb082ff65aebe89ff6be30cd.zip
Provide only NULL user callback if no connectivity sensor in AND/OR condition
- Problem: In case connectivity sensor is detected but not included in AND/OR we are providing user callback for detected user - Solution: Only provide user callback with NULL user and block other callbacks Change-Id: I08150f2821e326d43bf0745ee4bfa4369e5af942 Signed-off-by: Abhay agarwal <ay.agarwal@samsung.com>
-rw-r--r--packaging/capi-network-ua.spec2
-rw-r--r--src/user-awareness-monitors.c11
2 files changed, 10 insertions, 3 deletions
diff --git a/packaging/capi-network-ua.spec b/packaging/capi-network-ua.spec
index 5370229..577837e 100644
--- a/packaging/capi-network-ua.spec
+++ b/packaging/capi-network-ua.spec
@@ -1,6 +1,6 @@
Name: capi-network-ua
Summary: User Awareness Framework CAPI
-Version: 0.12.3
+Version: 0.12.4
Release: 1
License: Apache-2.0
Source0: %{name}-%{version}.tar.gz
diff --git a/src/user-awareness-monitors.c b/src/user-awareness-monitors.c
index 0e0c9cd..5be4551 100644
--- a/src/user-awareness-monitors.c
+++ b/src/user-awareness-monitors.c
@@ -271,6 +271,13 @@ static void __ua_monitor_send_user_presence_cb(ua_monitor_s *monitor,
ret_if(NULL == user_state);
+ /** Block user callback if environmental callback already sent*/
+ if (monitor->env_user_cb_sent) {
+ UA_DBG("Environmental User presence cb already sent");
+ FUNC_EXIT;
+ return;
+ }
+
ua_user_h user_handle = _ua_get_user_handle_by_account(
user_state->account);
/**
@@ -400,6 +407,7 @@ static void __ua_send_presence_detection()
}
if (monitor->presence_user_cb.callback) {
+ __ua_monitor_send_env_user_presence_cb(monitor);
for (l1 = monitor->user_state; NULL != l1; l1 = g_slist_next(l1)) {
ua_user_state_info_s *user_state = l1->data;
@@ -408,7 +416,6 @@ static void __ua_send_presence_detection()
__ua_monitor_send_user_presence_cb(monitor, user_state);
}
}
- __ua_monitor_send_env_user_presence_cb(monitor);
}
monitor->presence_detected_bitmask = 0;
@@ -534,6 +541,7 @@ static void __ua_sensor_presence_detected(ua_monitor_s *monitor,
}
if (!account) {
+ __ua_monitor_send_env_user_presence_cb(monitor);
for (l1 = monitor->user_state; NULL != l1; l1 = g_slist_next(l1)) {
ua_user_state_info_s *user_state = l1->data;
@@ -542,7 +550,6 @@ static void __ua_sensor_presence_detected(ua_monitor_s *monitor,
__ua_monitor_send_user_presence_cb(monitor, user_state);
}
}
- __ua_monitor_send_env_user_presence_cb(monitor);
}
FUNC_EXIT;