规避问题:反复切换主菜单风格,或者反复切换表盘,设备死机
author@CHENG <2393524978@qq.com>
Tue, 24 Jun 2025 05:59:29 +0000 (13:59 +0800)
committer@CHENG <2393524978@qq.com>
Tue, 24 Jun 2025 05:59:29 +0000 (13:59 +0800)
2.sdk/sdk/gui/lv_watch/lv_apps/launcher/launcher.c
2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_main_menu_switch.c
2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_main_menu_switch.h

index 73788a4..e22da9f 100644 (file)
@@ -132,13 +132,29 @@ lv_obj_t * launcher_tileview_add_tile(lv_obj_t * tileview, uint16_t id)
     return cont;
 }
 
+#ifdef MMI_PROJECT_Z5_HA_K18
+static void delay_task_cb(lv_task_t * task)
+{
+       lv_obj_t * obj = lv_watch_get_activity_obj(ACT_ID_LAUNCHER);
+       launcher_prepare_destory(obj);
+       lv_obj_clean(obj);
+       launcher_create(obj);
+}
+#endif
+
 void launcher_recreate(void)
 {
     printf("%s\n", __FUNCTION__);
+
+#ifdef MMI_PROJECT_Z5_HA_K18
+       lv_task_t * delay_task = lv_task_create(delay_task_cb, 50, LV_TASK_PRIO_HIGH, NULL);
+       lv_task_once(delay_task);
+#else
     lv_obj_t * obj = lv_watch_get_activity_obj(ACT_ID_LAUNCHER);
     launcher_prepare_destory(obj);
     lv_obj_clean(obj);
     launcher_create(obj);
+#endif
 }
 
 void launcher_power_key_event(void)
index 5b594f3..a1ac6ca 100644 (file)
@@ -40,15 +40,17 @@ static void setting_main_menu_switch_event_cb(lv_obj_t * obj, lv_event_t event)
 
        bool is_change_style = false;
        MMI_MAIN_MENU_STYLE_E style_value = mmi_main_menu_style_get();
+       uint32_t user_num = lv_watch_get_free_num(obj);
 
        printf("[@CHENG_DEBUG][%s][%d]: obj=0x%x\n", __FUNCTION__, __LINE__, obj);
-       printf("[@CHENG_DEBUG][%s][%d]: style0=0x%x,style1=0x%x\n", __FUNCTION__, __LINE__, ext->style0, ext->style1);
-       if((MMI_MAIN_MENU_STYLE_ONE_PAGE == style_value) && (ext->style1 == obj))
+       //printf("[@CHENG_DEBUG][%s][%d]: style0=0x%x,style1=0x%x\n", __FUNCTION__, __LINE__, ext->style0, ext->style1);
+       printf("[@CHENG_DEBUG][%s][%d]: user_num=%d\n", __FUNCTION__, __LINE__, user_num);
+       if((MMI_MAIN_MENU_STYLE_ONE_PAGE == style_value) && (1 == user_num)) // (ext->style1 == obj))
        {
                mmi_main_menu_style_set(MMI_MAIN_MENU_STYLE_LIST);
                is_change_style = true;
        }
-       else if((MMI_MAIN_MENU_STYLE_LIST == style_value) && (ext->style0 == obj))
+       else if((MMI_MAIN_MENU_STYLE_LIST == style_value) && (0 == user_num)) // (ext->style0 == obj))
        {
                mmi_main_menu_style_set(MMI_MAIN_MENU_STYLE_ONE_PAGE);
                is_change_style = true;
@@ -112,8 +114,9 @@ static lv_obj_t * setting_main_menu_switch_create(lv_obj_t * activity_obj)
     lv_btn_set_fit(style_btn_0, LV_FIT_TIGHT);
     lv_btn_set_layout(style_btn_0, LV_LAYOUT_ROW_MID);
     lv_obj_set_event_cb(style_btn_0, setting_main_menu_switch_event_cb);
-       ext->style0 = style_btn_0;
+       //ext->style0 = style_btn_0;
     lv_watch_obj_add_element(style_btn_0);
+       lv_watch_set_free_num(style_btn_0, 0);
 
     lv_obj_t * style_img_0 = lv_img_create(style_btn_0, NULL);
     lv_img_set_src(style_img_0, ICON_ITEM_NOT_SELECTED);
@@ -133,8 +136,9 @@ static lv_obj_t * setting_main_menu_switch_create(lv_obj_t * activity_obj)
        //
     lv_obj_t * style_btn_1 = lv_btn_create(obj, style_btn_0);
     lv_obj_set_event_cb(style_btn_1, setting_main_menu_switch_event_cb);
-       ext->style1 = style_btn_1;
+       //ext->style1 = style_btn_1;
     lv_watch_obj_add_element(style_btn_1);
+       lv_watch_set_free_num(style_btn_1, 1);
 
     lv_obj_t * style_img_1 = lv_img_create(style_btn_1, NULL);
        lv_img_set_src(style_img_1, ICON_ITEM_NOT_SELECTED);
index 1cbeccb..f40375a 100644 (file)
@@ -23,8 +23,8 @@ typedef struct
 {
     lv_watch_obj_ext_t lv_watch_obj;
     /*New data for this type */
-    lv_obj_t * style0;
-    lv_obj_t * style1;
+    //lv_obj_t * style0;
+    //lv_obj_t * style1;
 } lv_main_menu_switch_obj_ext_t;