From: saerome.kim Date: Wed, 4 Sep 2019 11:57:51 +0000 (+0900) Subject: Fixed problem that cant'receive PRESENCE/ABSENCE if a least one device X-Git-Tag: submit/tizen/20190916.120818~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2cf122c68b87a9711630fa9de18579b357f73acb;p=platform%2Fcore%2Fapi%2Fuser-awareness.git Fixed problem that cant'receive PRESENCE/ABSENCE if a least one device is not deceted. Problem: PRESENCE/ABSENCE callback are not called if no device is detected. Cause: monitor->presence_detected_bitmask might be updated in __a_sensor_presence_detected() according to the monitor->presence_mode. However, this function __ua_monitor_send_user_presence_cb() can be called before it is updated when "account" is valid. Soultion: remove checking user_handle in __ua_monitor_send_user_presence_cb() Change-Id: I6ce39a3e12c22d098a54d86abc165722495c43a7 Signed-off-by: saerome.kim --- diff --git a/packaging/capi-network-ua.spec b/packaging/capi-network-ua.spec index 077649f..16c4586 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.8.4 +Version: 0.8.5 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 d06387e..4ebe57b 100644 --- a/src/user-awareness-monitors.c +++ b/src/user-awareness-monitors.c @@ -265,7 +265,7 @@ static void __ua_monitor_send_user_presence_cb(ua_monitor_s *monitor, ua_user_state_info_s *user_state) { FUNC_ENTRY; - unsigned int env_presence_bm = 0; + unsigned int env_presence_bitmask = 0; unsigned int user_sensor_bitmask = user_state->sensor_bitmask; gboolean and_condition = 0; gboolean or_condition = 0; @@ -274,14 +274,14 @@ static void __ua_monitor_send_user_presence_cb(ua_monitor_s *monitor, ua_user_h user_handle = _ua_get_user_handle_by_account( user_state->account); - env_presence_bm = monitor->presence_detected_bitmask + env_presence_bitmask = monitor->presence_detected_bitmask & (UA_SENSOR_MOTION | UA_SENSOR_LIGHT); /** * Check whether user_handle present or not and also check * whether presence has been started or not. */ - if (!user_handle || user_state->cb_sent + if (user_state->cb_sent || !monitor->presence_user_cb.callback || !monitor->presence_detection_started) { FUNC_EXIT; @@ -290,16 +290,16 @@ static void __ua_monitor_send_user_presence_cb(ua_monitor_s *monitor, UA_DBG("Bitmasks: user's sensor [%u], env_pres [%u], " \ "conditions: AND [%u] - OR [%u]", - user_sensor_bitmask, env_presence_bm, + user_sensor_bitmask, env_presence_bitmask, monitor->presence_bitmask_and, monitor->presence_bitmask_or); and_condition = monitor->presence_bitmask_and == (monitor->presence_bitmask_and - & (user_sensor_bitmask | env_presence_bm)); + & (user_sensor_bitmask | env_presence_bitmask)); or_condition = !monitor->presence_bitmask_or || (monitor->presence_bitmask_or - & (user_sensor_bitmask | env_presence_bm)); + & (user_sensor_bitmask | env_presence_bitmask)); UA_DBG("Conditions': AND[%s] [%s] OR[%s]", and_condition ? "true" : "false",