diff options
author | Inkyun Kil <inkyun.kil@samsung.com> | 2015-08-04 13:56:41 +0900 |
---|---|---|
committer | inkyun.kil <inkyun.kil@samsung.com> | 2015-11-25 17:34:31 +0900 |
commit | c7783ce4407e03d4a74a0d2f04b226ff0692f91b (patch) | |
tree | dbcb22356fef74fac22241bb273e5d481b0b792c /alarm-manager-schedule.c | |
parent | 96c00b0c119c609e13475fe92786749bf8749869 (diff) | |
download | alarm-manager-c7783ce4407e03d4a74a0d2f04b226ff0692f91b.tar.gz alarm-manager-c7783ce4407e03d4a74a0d2f04b226ff0692f91b.tar.bz2 alarm-manager-c7783ce4407e03d4a74a0d2f04b226ff0692f91b.zip |
Change standard point of start time for periodic alarm
Signed-off-by: Inkyun Kil <inkyun.kil@samsung.com>
Conflicts:
alarm-manager-schedule.c
alarm-manager.c
include/alarm-internal.h
Change-Id: I39199e101d56eb89ac818e871e83af112942e3da
Diffstat (limited to 'alarm-manager-schedule.c')
-rw-r--r-- | alarm-manager-schedule.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/alarm-manager-schedule.c b/alarm-manager-schedule.c index 275a807..5b6f395 100644 --- a/alarm-manager-schedule.c +++ b/alarm-manager-schedule.c @@ -230,7 +230,17 @@ static time_t __alarm_next_duetime_repeat(__alarm_info_t *__alarm_info) duetime_tm.tm_mday = start->day; duetime_tm.tm_isdst = -1; - due_time = mktime(&duetime_tm); + if (alarm_info->alarm_type & ALARM_TYPE_PERIOD && + alarm_info->mode.u_interval.interval > 0) { + /* For minimize 'while loop' + * Duetime should be "periodic_standard_time + (interval * x) >= current" */ + time_t periodic_standard_time = _get_periodic_alarm_standard_time(); + time_t temp; + temp = (current_time - periodic_standard_time) / alarm_info->mode.u_interval.interval; + due_time = periodic_standard_time + (temp * alarm_info->mode.u_interval.interval); + } else { + due_time = mktime(&duetime_tm); + } while (__alarm_info->start > due_time || current_time > due_time || ((!is_time_changed) && (current_time == due_time))) { due_time += alarm_info->mode.u_interval.interval; |