fix(P4): Aufweckdialog sofort statt nach fünf Sekunden (1.8.7)
Vom Fingertipp auf die Standby-Uhr bis zum Dialog vergingen ~5 s mit schwarzem Bildschirm. Ursache war der Scrim mit LV_OPA_70 über den ganzen Bildschirm: Ein durchscheinender Vollbild-Layer zwingt LVGL zu einem Zwischenpuffer und zum Mischen der gesamten Fläche - bei 1280x720 in 24 Bit die teuerste Operation überhaupt. - Wake-Scrim auf WS_PANEL_7H jetzt LV_OPA_COVER. Verloren geht nichts: Im Standby liegt dahinter ohnehin nur Schwarz. - Der Drawer-Scrim (LV_OPA_50) hat dasselbe Problem und ist ebenfalls deckend, in 0x0d0d0d - auf dunklem Grund optisch praktisch identisch. - Die JC-Panels behalten in beiden Fällen die Transparenz. - Die Dialogkarte wächst mit der Schriftgröße (420 / 640 / 900 px), damit der Text nicht an unglücklichen Stellen umbricht. Beide Panel-Varianten mit arduino-cli gegengebaut. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01STPpZoK3ToDhrcniVqE6MJ
This commit is contained in:
co-authored by
Claude Opus 5
parent
0f5b681421
commit
9fef4f8a6e
@@ -1,3 +1,16 @@
|
|||||||
|
Version 1.8.7:
|
||||||
|
- Vom Fingertipp auf die Standby-Uhr bis zum Aufweckdialog vergingen rund fünf Sekunden mit
|
||||||
|
schwarzem Bildschirm. Ursache war der halbdurchsichtige Vorhang, den der Dialog über den
|
||||||
|
ganzen Bildschirm legt: Dafür muss LVGL einen Vollbild-Zwischenpuffer anlegen und die
|
||||||
|
gesamte Fläche mischen - bei 1280x720 in 24 Bit die teuerste Operation überhaupt.
|
||||||
|
- Der Vorhang ist auf dem Waveshare-Panel jetzt deckend. Verloren geht dabei nichts: Im
|
||||||
|
Standby liegt dahinter ohnehin nur Schwarz.
|
||||||
|
- Aus demselben Grund ist auch der Vorhang des Menüs deckend, in einem dunklen Ton. Auf
|
||||||
|
dunklem Grund sieht das praktisch genauso aus wie halbdurchsichtig, spart aber dieselbe
|
||||||
|
Mischarbeit. Die JC-Panels behalten in beiden Fällen die Transparenz.
|
||||||
|
- Der Aufweckdialog wird mit größerer Schrift auch breiter (420 / 640 / 900 Pixel), damit
|
||||||
|
der Text nicht an unglücklichen Stellen umbricht.
|
||||||
|
|
||||||
Version 1.8.6:
|
Version 1.8.6:
|
||||||
- Die Uhrzeit verschwindet nicht mehr, wenn die Hauptplatine ihre Zeit gerade neu abgleicht.
|
- Die Uhrzeit verschwindet nicht mehr, wenn die Hauptplatine ihre Zeit gerade neu abgleicht.
|
||||||
Der P4 merkt sich die zuletzt empfangene Uhrzeit und zählt zwischen den Meldungen selbst
|
Der P4 merkt sich die zuletzt empfangene Uhrzeit und zählt zwischen den Meldungen selbst
|
||||||
|
|||||||
@@ -3553,8 +3553,16 @@ void ui_init(ProtocolClient* client) {
|
|||||||
g_drawer = lv_obj_create(scr);
|
g_drawer = lv_obj_create(scr);
|
||||||
lv_obj_set_size(g_drawer, LV_PCT(100), DISP_VER_RES - 44);
|
lv_obj_set_size(g_drawer, LV_PCT(100), DISP_VER_RES - 44);
|
||||||
lv_obj_set_pos(g_drawer, 0, 44);
|
lv_obj_set_pos(g_drawer, 0, 44);
|
||||||
|
#if JC_PANEL_TYPE == WS_PANEL_7H
|
||||||
|
// Deckend statt halbdurchsichtig - aus demselben Grund wie beim Aufweckdialog: Ein
|
||||||
|
// durchscheinender Vorhang laesst LVGL die ganze Flaeche darunter mitzeichnen und
|
||||||
|
// mischen. Auf dunklem Grund sieht ein dunkles Deckend praktisch genauso aus.
|
||||||
|
lv_obj_set_style_bg_color(g_drawer, lv_color_hex(0x0d0d0d), 0);
|
||||||
|
lv_obj_set_style_bg_opa(g_drawer, LV_OPA_COVER, 0);
|
||||||
|
#else
|
||||||
lv_obj_set_style_bg_color(g_drawer, lv_color_hex(0x000000), 0);
|
lv_obj_set_style_bg_color(g_drawer, lv_color_hex(0x000000), 0);
|
||||||
lv_obj_set_style_bg_opa(g_drawer, LV_OPA_50, 0);
|
lv_obj_set_style_bg_opa(g_drawer, LV_OPA_50, 0);
|
||||||
|
#endif
|
||||||
lv_obj_set_style_border_width(g_drawer, 0, 0);
|
lv_obj_set_style_border_width(g_drawer, 0, 0);
|
||||||
lv_obj_set_style_pad_all(g_drawer, 0, 0);
|
lv_obj_set_style_pad_all(g_drawer, 0, 0);
|
||||||
lv_obj_set_style_radius(g_drawer, 0, 0);
|
lv_obj_set_style_radius(g_drawer, 0, 0);
|
||||||
@@ -3634,13 +3642,25 @@ void ui_init(ProtocolClient* client) {
|
|||||||
g_wakeConfirm = lv_obj_create(lv_layer_top());
|
g_wakeConfirm = lv_obj_create(lv_layer_top());
|
||||||
lv_obj_set_size(g_wakeConfirm, LV_PCT(100), LV_PCT(100));
|
lv_obj_set_size(g_wakeConfirm, LV_PCT(100), LV_PCT(100));
|
||||||
lv_obj_set_style_bg_color(g_wakeConfirm, lv_color_hex(0x000000), 0);
|
lv_obj_set_style_bg_color(g_wakeConfirm, lv_color_hex(0x000000), 0);
|
||||||
|
#if JC_PANEL_TYPE == WS_PANEL_7H
|
||||||
|
// Deckend statt halbtransparent. Ein durchscheinender Vorhang ueber den ganzen
|
||||||
|
// Bildschirm zwingt LVGL, einen Vollbild-Zwischenpuffer anzulegen und die gesamte
|
||||||
|
// Flaeche zu mischen - bei 1280x720 in 24 Bit dauerte das rund fuenf Sekunden, in
|
||||||
|
// denen nach dem Fingertipp nur der schwarze Standby-Bildschirm zu sehen war.
|
||||||
|
// Verloren geht dabei nichts: Dahinter liegt im Standby ohnehin nur Schwarz.
|
||||||
|
lv_obj_set_style_bg_opa(g_wakeConfirm, LV_OPA_COVER, 0);
|
||||||
|
#else
|
||||||
lv_obj_set_style_bg_opa(g_wakeConfirm, LV_OPA_70, 0);
|
lv_obj_set_style_bg_opa(g_wakeConfirm, LV_OPA_70, 0);
|
||||||
|
#endif
|
||||||
lv_obj_set_style_border_width(g_wakeConfirm, 0, 0);
|
lv_obj_set_style_border_width(g_wakeConfirm, 0, 0);
|
||||||
lv_obj_set_style_radius(g_wakeConfirm, 0, 0);
|
lv_obj_set_style_radius(g_wakeConfirm, 0, 0);
|
||||||
lv_obj_clear_flag(g_wakeConfirm, LV_OBJ_FLAG_SCROLLABLE);
|
lv_obj_clear_flag(g_wakeConfirm, LV_OBJ_FLAG_SCROLLABLE);
|
||||||
lv_obj_add_flag(g_wakeConfirm, LV_OBJ_FLAG_CLICKABLE); // Scrim faengt Tipps ab
|
lv_obj_add_flag(g_wakeConfirm, LV_OBJ_FLAG_CLICKABLE); // Scrim faengt Tipps ab
|
||||||
lv_obj_t* wakeCard = th_card(g_wakeConfirm);
|
lv_obj_t* wakeCard = th_card(g_wakeConfirm);
|
||||||
lv_obj_set_width(wakeCard, 420);
|
// Breite waechst mit der gewaehlten Schriftgroesse mit. Bei fester Breite brach der
|
||||||
|
// Text in der Stufe Gross an unguenstigen Stellen um.
|
||||||
|
lv_obj_set_width(wakeCard, (g_fontStep == FONT_GROSS) ? 900
|
||||||
|
: (g_fontStep == FONT_MITTEL) ? 640 : 420);
|
||||||
lv_obj_set_height(wakeCard, LV_SIZE_CONTENT);
|
lv_obj_set_height(wakeCard, LV_SIZE_CONTENT);
|
||||||
lv_obj_center(wakeCard);
|
lv_obj_center(wakeCard);
|
||||||
lv_obj_set_flex_flow(wakeCard, LV_FLEX_FLOW_COLUMN);
|
lv_obj_set_flex_flow(wakeCard, LV_FLEX_FLOW_COLUMN);
|
||||||
|
|||||||
Reference in New Issue
Block a user