FIx side effect for 'Dispensables' 09/221909/1
authorInkyun Kil <inkyun.kil@samsung.com>
Wed, 8 Jan 2020 07:42:02 +0000 (16:42 +0900)
committerInkyun Kil <inkyun.kil@samsung.com>
Wed, 8 Jan 2020 07:44:42 +0000 (16:44 +0900)
Although period is zero, INEXACT alarm should be repeated alarm.

Change-Id: I60c42c71f5a5a0a9fca04c67e0b9c1cf9ab7b3cd
Signed-off-by: Inkyun Kil <inkyun.kil@samsung.com>
lib/alarm-lib.c

index 0ce96f2..1f53853 100644 (file)
@@ -1152,6 +1152,7 @@ EXPORT_API int alarmmgr_add_alarm_appsvc(int alarm_type, time_t trigger_at_time,
 {
        int error_code = 0;
        int result = 0;
+       int modified_alarm_type = 0;
        alarm_info_t alarm_info;
        const char *operation = NULL;
        const char *appid = NULL;
@@ -1192,22 +1193,23 @@ EXPORT_API int alarmmgr_add_alarm_appsvc(int alarm_type, time_t trigger_at_time,
                return ERR_ALARM_INVALID_PARAM;
        }
 
-       _initialize_alarm_info(&alarm_info, alarm_type, trigger_at_time, interval,
-                       false);
-
-       alarm_info.alarm_type |= ALARM_TYPE_RELATIVE;
-       LOGD("alarm_info.type : %d", alarm_info.alarm_type);
+       modified_alarm_type = alarm_type;
 
        if (__compare_api_version(&result, getuid()) < 0)
                return ERR_ALARM_SYSTEM_FAIL;
        if (result < 0) {
-               if (alarm_info.alarm_type & ALARM_TYPE_INEXACT)
-                       alarm_info.alarm_type ^= ALARM_TYPE_INEXACT;
+               if (alarm_type & ALARM_TYPE_INEXACT)
+                       modified_alarm_type ^= ALARM_TYPE_INEXACT;
        }
 
-       if ((alarm_type & ALARM_TYPE_INEXACT) &&
-                       alarm_info.mode.u_interval.interval < MIN_INEXACT_INTERVAL)
+       _initialize_alarm_info(&alarm_info, modified_alarm_type | ALARM_TYPE_RELATIVE,
+                       trigger_at_time, interval, false);
+
+       if ((alarm_info.alarm_type & ALARM_TYPE_INEXACT) &&
+                       alarm_info.mode.u_interval.interval < MIN_INEXACT_INTERVAL) {
                alarm_info.mode.u_interval.interval = MIN_INEXACT_INTERVAL;
+               alarm_info.mode.repeat = ALARM_REPEAT_MODE_REPEAT;
+       }
 
        if (!_send_alarm_create_appsvc(alarm_context, &alarm_info, alarm_id, b, &error_code))
                return error_code;
@@ -1240,15 +1242,14 @@ EXPORT_API int alarmmgr_add_alarm_noti(int alarm_type, time_t trigger_at_time,
                return ERR_ALARM_INVALID_PARAM;
        }
 
-       _initialize_alarm_info(&alarm_info, alarm_type, trigger_at_time, interval,
-                       false);
-
-       alarm_info.alarm_type |= ALARM_TYPE_RELATIVE;
-       LOGD("alarm_info.type : %d", alarm_info.alarm_type);
+       _initialize_alarm_info(&alarm_info, alarm_type | ALARM_TYPE_RELATIVE,
+                       trigger_at_time, interval, false);
 
        if ((alarm_info.alarm_type & ALARM_TYPE_INEXACT) &&
-                       alarm_info.mode.u_interval.interval < MIN_INEXACT_INTERVAL)
+                       alarm_info.mode.u_interval.interval < MIN_INEXACT_INTERVAL) {
                alarm_info.mode.u_interval.interval = MIN_INEXACT_INTERVAL;
+               alarm_info.mode.repeat = ALARM_REPEAT_MODE_REPEAT;
+       }
 
        if (!_send_alarm_create_noti(alarm_context, &alarm_info, alarm_id, noti, &error_code))
                return error_code;
@@ -1288,12 +1289,8 @@ static int _alarmmgr_add_alarm(int alarm_type,
                return ERR_ALARM_INVALID_PARAM;
        }
 
-       _initialize_alarm_info(&alarm_info, alarm_type, trigger_at_time, interval,
-                       precision);
-
-       alarm_info.alarm_type |= ALARM_TYPE_RELATIVE;
-
-       LOGD("alarm_info.type : %d", alarm_info.alarm_type);
+       _initialize_alarm_info(&alarm_info, alarm_type | ALARM_TYPE_RELATIVE,
+                       trigger_at_time, interval, precision);
 
        if (destination != NULL) {
                memset(dst_service_name, 0,
@@ -1369,13 +1366,9 @@ static int _alarmmgr_add_alarm_withcb(int alarm_type, time_t trigger_at_time,
                return ERR_ALARM_INVALID_PARAM;
        }
 
-       _initialize_alarm_info(&alarm_info, alarm_type, trigger_at_time, interval,
-                       precision);
-
-       alarm_info.alarm_type |= ALARM_TYPE_RELATIVE;
-       alarm_info.alarm_type |= ALARM_TYPE_WITHCB;
-
-       LOGD("alarm_info.type : %d", alarm_info.alarm_type);
+       _initialize_alarm_info(&alarm_info,
+                       alarm_type | ALARM_TYPE_RELATIVE | ALARM_TYPE_WITHCB,
+                       trigger_at_time, interval, precision);
 
        if (!_send_alarm_create(alarm_context, &alarm_info, alarm_id, "null", "null", &error_code))
                return error_code;