From a6a387a87c47635229af9689b755698006cc02c2 Mon Sep 17 00:00:00 2001 From: gagarinlg Date: Mon, 24 Jan 2022 21:15:27 +0100 Subject: [PATCH] reduce redraw issues on screen change fix crash when lvobj is already deleted, but events are still in the queue --- radio/src/thirdparty/libopenui/src/button.cpp | 3 +++ radio/src/thirdparty/libopenui/src/layer.h | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/radio/src/thirdparty/libopenui/src/button.cpp b/radio/src/thirdparty/libopenui/src/button.cpp index a48989ca1..b527751b9 100644 --- a/radio/src/thirdparty/libopenui/src/button.cpp +++ b/radio/src/thirdparty/libopenui/src/button.cpp @@ -28,6 +28,9 @@ void Button::onPress() if (check != bool(windowFlags & BUTTON_CHECKED)) { windowFlags ^= BUTTON_CHECKED; + if(lvobj == nullptr) + return; + if (! (windowFlags & BUTTON_CHECKED)) lv_obj_clear_state(lvobj, LV_STATE_CHECKED); else diff --git a/radio/src/thirdparty/libopenui/src/layer.h b/radio/src/thirdparty/libopenui/src/layer.h index e3e9caf02..64da2542b 100644 --- a/radio/src/thirdparty/libopenui/src/layer.h +++ b/radio/src/thirdparty/libopenui/src/layer.h @@ -47,9 +47,10 @@ class Layer } // layers are screens in lvgl - lv_scr_load(window->getLvObj()); lv_obj_set_parent(canvas, window->getLvObj()); lv_obj_move_background(canvas); + lv_scr_load(window->getLvObj()); + lv_obj_invalidate(canvas); stack.emplace_back(Layer(window));