Sitelet https://github.com/akomakom/esp32-spa-controller/commit/e11a8ec98af479e583972a4cedbfe72a07d3d5a6
Skip to content

Commit e11a8ec

Browse files
committed
removed animations to avoid screen corruption
1 parent 8ca137c commit e11a8ec

1 file changed

Lines changed: 28 additions & 13 deletions

File tree

‎display/display.ino‎

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -280,19 +280,22 @@ void createSensorBasedDialog() {
280280
static lv_coord_t row_dsc[] = {lv_pct(10), lv_pct(40), lv_pct(40), LV_GRID_TEMPLATE_LAST};
281281

282282
// dialog (can it be created on the active screen? I want it to be a background layer)
283-
sensorBasedControlPanel = lv_obj_create(NULL);
283+
// Full-screen overlay that is a CHILD of the main screen, not a separate screen.
284+
// Opening/closing it is clear-hidden + move-foreground + a short single-screen slide
285+
// (see showSetpointDialog/hideSetpointDialog) instead of lv_scr_load_anim. A screen
286+
// swap composites two full screens for the whole 500ms animation, which starved the
287+
// RGB panel's bounce-buffer refill from PSRAM and made the image roll vertically; an
288+
// overlay on one screen avoids that sustained contention.
289+
sensorBasedControlPanel = lv_obj_create(mainScreen);
290+
lv_obj_set_size(sensorBasedControlPanel, lv_pct(100), lv_pct(100));
291+
lv_obj_align(sensorBasedControlPanel, LV_ALIGN_TOP_LEFT, 0, 0);
292+
lv_obj_set_style_border_width(sensorBasedControlPanel, 0, 0);
293+
lv_obj_set_style_radius(sensorBasedControlPanel, 0, 0);
294+
lv_obj_add_flag(sensorBasedControlPanel, LV_OBJ_FLAG_HIDDEN);
295+
lv_obj_clear_flag(sensorBasedControlPanel, LV_OBJ_FLAG_SCROLLABLE);
284296

285297
TRACE("mbox 1");
286-
lv_scr_load(sensorBasedControlPanel);
287-
TRACE("mbox 1.1");
288-
// lv_obj_add_flag(sensorBasedControlPanel, LV_OBJ_FLAG_HIDDEN);
289-
TRACE("mbox 1.2");
290-
// lv_obj_move_background(sensorBasedControlPanel);
291-
TRACE("mbox 1.3");
292-
// lv_obj_set_size(sensorBasedControlPanel, lv_pct(90), lv_pct(90));
293298
lv_obj_add_style(sensorBasedControlPanel, &style, 0);
294-
// lv_obj_add_style(sensorBasedControlPanel, &styleNoPadding, 0);
295-
lv_obj_center(sensorBasedControlPanel);
296299
TRACE("mbox 1.4");
297300
lv_obj_set_style_grid_column_dsc_array(sensorBasedControlPanel, col_dsc, 0);
298301
lv_obj_set_style_grid_row_dsc_array(sensorBasedControlPanel, row_dsc, 0);
@@ -399,6 +402,19 @@ void createSensorBasedDialog() {
399402
TRACE("mbox 8");
400403
}
401404

405+
// Show/hide the setpoint overlay INSTANTLY (no animation). Any full-screen animation
406+
// sustains a heavy framebuffer redraw that starves the RGB panel's bounce-buffer
407+
// refill from PSRAM and makes the image roll vertically; a single un-hide is one
408+
// redraw, the least stress possible for a full-screen dialog.
409+
void showSetpointDialog() {
410+
lv_obj_clear_flag(sensorBasedControlPanel, LV_OBJ_FLAG_HIDDEN);
411+
lv_obj_move_foreground(sensorBasedControlPanel);
412+
}
413+
414+
void hideSetpointDialog() {
415+
lv_obj_add_flag(sensorBasedControlPanel, LV_OBJ_FLAG_HIDDEN);
416+
}
417+
402418
void setup()
403419
{
404420
Serial.begin(115200);
@@ -794,7 +810,7 @@ static void btn_event_cb(lv_event_t * e)
794810
TRACE("SENS DISP 2.1");
795811
lv_label_set_text_fmt(sensorBasedControlDescription, "Adjust setpoint for %s", status->name);
796812
TRACE("SENS DISP 3");
797-
lv_scr_load_anim(sensorBasedControlPanel, LV_SCR_LOAD_ANIM_OVER_TOP, 500, 10, false);
813+
showSetpointDialog();
798814
// lv_obj_move_foreground(sensorBasedControlPanel);
799815
// lv_obj_clear_flag(sensorBasedControlPanel, LV_OBJ_FLAG_HIDDEN);
800816

@@ -859,8 +875,7 @@ static void lv_spinbox_event_cb(lv_event_t * e)
859875
}
860876
// lv_obj_move_background(sensorBasedControlPanel);
861877
// lv_obj_add_flag(sensorBasedControlPanel, LV_OBJ_FLAG_HIDDEN);
862-
// lv_scr_load(mainScreen);
863-
lv_scr_load_anim(mainScreen, LV_SCR_LOAD_ANIM_OVER_BOTTOM, 500, 10, false);
878+
hideSetpointDialog();
864879
}
865880
TRACE("SENS CB END");
866881

0 commit comments

Comments
 (0)