Provide only NULL user callback if no connectivity sensor in AND/OR condition submit/tizen/20191024.123502
authorAbhay agarwal <ay.agarwal@samsung.com>
Wed, 23 Oct 2019 13:15:01 +0000 (18:45 +0530)
committersaerome.kim <saerome.kim@samsung.com>
Thu, 24 Oct 2019 12:23:17 +0000 (21:23 +0900)
- 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>
packaging/capi-network-ua.spec
src/user-awareness-monitors.c

index 5370229ddf3a4f392dbe0d6383acc965aa988bf1..577837efdaa0926a1639127c554d7d7b59f13d4c 100644 (file)
@@ -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
index 0e0c9cdb3e17ee02978ddbcb8195f2ca4c17bfde..5be4551190f43e71b0dda1b344ca0ebf706d5911 100644 (file)
@@ -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;