Fix ambient tick duplication bug 69/233469/2
authorhyunho <hhstark.kang@samsung.com>
Fri, 15 May 2020 03:16:40 +0000 (12:16 +0900)
committerhyunho <hhstark.kang@samsung.com>
Fri, 15 May 2020 04:18:39 +0000 (13:18 +0900)
Change-Id: I4b328d4ff1dad2e35251af662b2c13229f5df341
Signed-off-by: hyunho <hhstark.kang@samsung.com>
src/base/watch_base.c

index 4a91cbb2157b6810b3d3266e52be57d593f567d2..b0528519e987289d5affd136dca1266461895466 100755 (executable)
@@ -367,6 +367,11 @@ static int __set_ambient_tick_cb(void *data)
                if (!alarm_info)
                        return -1;
 
+               if (alarm_id) {
+                       alarmmgr_remove_alarm(alarm_id);
+                       alarm_id = 0;
+               }
+
                r = alarmmgr_add_alarm_withcb_with_localtime(alarm_info,
                        __ambient_tick_cb, data, &alarm_id);
                if (r < 0)
@@ -563,6 +568,11 @@ int __on_change_signal(const char *endpoint, aul_app_com_result_e e,
        _W("__on_change_signal");
        bundle_get_str(envelope, "__AMBIENT_MODE__", &mode);
        bundle_get_str(envelope, "__AMBIENT_EXTRA__", &extra);
+
+       if ((mode == NULL) || (__context.ambient_mode == atoi(mode))) {
+               _E("invalid state (%d) (%s)", __context.ambient_mode, mode);
+               return 0;
+       }
        __context.extra = bundle_decode((bundle_raw *)extra, strlen(extra));
        __handling_ambient_mode(atoi(mode), NULL);