From 2618f2c61323ebf1da266c1bfd095ae53b4faf50 Mon Sep 17 00:00:00 2001 From: fvanroie Date: Tue, 10 May 2022 14:25:47 +0200 Subject: [PATCH] Fix redraw screen after antiburn stops --- src/hasp/hasp.cpp | 14 +++++++++++--- src/hasp/hasp.h | 2 +- src/hasp/hasp_event.cpp | 12 ++++-------- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/hasp/hasp.cpp b/src/hasp/hasp.cpp index a29edd0c..feeb1a40 100644 --- a/src/hasp/hasp.cpp +++ b/src/hasp/hasp.cpp @@ -184,14 +184,22 @@ void hasp_get_sleep_payload(uint8_t state, char* payload) */ static lv_task_t* antiburn_task; -void hasp_stop_antiburn() +bool hasp_stop_antiburn() { + bool changed = false; lv_obj_t* layer = lv_disp_get_layer_sys(NULL); - // if(layer) lv_obj_set_style_local_bg_opa(layer, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_TRANSP); - if(antiburn_task) lv_task_del(antiburn_task); + + // if(layer) lv_obj_set_style_local_bg_opa(layer, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_TRANSP); + if(antiburn_task) { + lv_task_del(antiburn_task); + lv_obj_invalidate(lv_scr_act()); + changed = true; + } antiburn_task = NULL; hasp_set_wakeup_touch(haspDevice.get_backlight_power() == false); // enabled if backlight is OFF gui_hide_pointer(false); + + return changed; } void hasp_antiburn_cb(lv_task_t* task) diff --git a/src/hasp/hasp.h b/src/hasp/hasp.h index 018171e3..ffa2cba3 100644 --- a/src/hasp/hasp.h +++ b/src/hasp/hasp.h @@ -73,7 +73,7 @@ void hasp_set_sleep_time(uint16_t short_time, uint16_t long_time); void hasp_set_sleep_offset(uint32_t offset); void hasp_set_wakeup_touch(bool en); void hasp_set_antiburn(int32_t repeat_count, uint32_t period); -void hasp_stop_antiburn(); +bool hasp_stop_antiburn(); hasp_event_t hasp_get_antiburn(); void hasp_init(void); diff --git a/src/hasp/hasp_event.cpp b/src/hasp/hasp_event.cpp index eb56f6ae..cd53752c 100644 --- a/src/hasp/hasp_event.cpp +++ b/src/hasp/hasp_event.cpp @@ -335,20 +335,16 @@ void first_touch_event_handler(lv_obj_t* obj, lv_event_t event) // log_event("wakeup", event); if(event == LV_EVENT_RELEASED && obj == lv_disp_get_layer_sys(NULL)) { + bool changed = hasp_stop_antiburn(); // Disable antiburn task + if(!haspDevice.get_backlight_power()) { dispatch_backlight(NULL, "on", TAG_EVENT); // backlight on and also disable wakeup touch } else { hasp_set_wakeup_touch(false); // only disable wakeup touch } - // Idle off - hasp_update_sleep_state(); // wakeup? - - // Disable antiburn task - hasp_event_t old_state = hasp_get_antiburn(); - hasp_stop_antiburn(); - hasp_event_t new_state = hasp_get_antiburn(); - if(old_state != new_state) dispatch_state_antiburn(new_state); // publish the new state + hasp_update_sleep_state(); // wakeup, send Idle off + if(changed) dispatch_state_antiburn(hasp_get_antiburn()); // publish the new state } }