gui: fix "lock screens" making UI viewport disappear
rockbox-gerrit-noreply--- via rockbox-cvs <[email protected]> Sat, 2 May 2026 12:42:11 -0400
| Newsgroups | gmane.comp.systems.archos.rockbox.cvs |
|---|---|
| Message-ID | <[email protected]> |
commit 88d4903d10385fade0a6eeb3c679c91a7a20d623 Author: Christian Soffke <[email protected]> Date: Fri May 1 19:28:12 2026 +0200 gui: fix "lock screens" making UI viewport disappear Themes like Adwaitapod, Themify, or FreshOS have custom "lock screens" that are drawn on top of the UI viewport. Request a full skin update when unlocked, so you don't have to press a button to make the hidden UI viewport appear again. Change-Id: Idf5023b4e12f7aea1cd7a2e9d9ab2f754387dc48 diff --git a/apps/action.c b/apps/action.c index 34af7f30a1..c7dd74f60a 100644 --- a/apps/action.c +++ b/apps/action.c @@ -939,7 +939,7 @@ static inline void do_softlock(action_last_t *last, action_cur_t *cur) if (notify_user) { #ifndef BOOTLOADER - skin_request_update_locked(); + skin_request_update_locked(last->keys_locked); #endif action_handle_backlight(true, false); diff --git a/apps/gui/skin_engine/skin_engine.c b/apps/gui/skin_engine/skin_engine.c index 99a33caea8..5528385f80 100644 --- a/apps/gui/skin_engine/skin_engine.c +++ b/apps/gui/skin_engine/skin_engine.c @@ -344,12 +344,16 @@ void skin_request_full_update(enum skinnable_screens skin) /* Request skin update for lock state change */ -void skin_request_update_locked(void) +void skin_request_update_locked(bool locked) { if (get_current_activity() == ACTIVITY_WPS) return; sb_skin_force_next_update(); + + /* fix themes that draw on top of the UI viewport when locked */ + if (!locked) + skin_request_full_update(CUSTOM_STATUSBAR); #ifdef HAS_BUTTON_HOLD button_queue_post(BUTTON_NONE, 0); #endif diff --git a/apps/gui/skin_engine/skin_engine.h b/apps/gui/skin_engine/skin_engine.h index 383086a19c..fbaf1bf68a 100644 --- a/apps/gui/skin_engine/skin_engine.h +++ b/apps/gui/skin_engine/skin_engine.h @@ -82,7 +82,7 @@ void skin_unload_all(void); bool skin_do_full_update(enum skinnable_screens skin, enum screen_type screen); void skin_request_full_update(enum skinnable_screens skin); -void skin_request_update_locked(void); +void skin_request_update_locked(bool locked); bool dbg_skin_engine(void); diff --git a/firmware/backlight.c b/firmware/backlight.c index c6bc7d8aba..3623162adb 100644 --- a/firmware/backlight.c +++ b/firmware/backlight.c @@ -889,7 +889,7 @@ void backlight_set_timeout_plugged(int value) void backlight_hold_changed(bool hold_button) { #ifndef BOOTLOADER - skin_request_update_locked(); + skin_request_update_locked(hold_button); #endif if (!hold_button || (backlight_on_button_hold > 0)) { -- rockbox-cvs mailing list [email protected] https://lists.haxx.se/mailman/listinfo/rockbox-cvs