1
0
Fork 0
forked from len0rd/rockbox

Revert "Eliminate SBS update on WPS exit"

This reverts commit 18c8e554fd.

Unfortunately, this approach doesn't play super-well
with *all* themes, specifically in cases where the user-
set background color, used for drawing on the backdrop,
doesn't really blend in with the skin's actual background
color. Plus, it may leave some patches of color behind,
if a theme author didn't take care to cover all parts of
the screen with foreground viewports.

Change-Id: I0159b2e5de6c0753dea54bc6bafe5bc6268a0c6a
This commit is contained in:
Christian Soffke 2025-03-23 04:34:51 +01:00
parent f9bdf33a41
commit 095729eb7d
2 changed files with 12 additions and 12 deletions

View file

@ -57,7 +57,6 @@
#include "language.h"
#include "statusbar-skinned.h"
#include "skin_engine/skin_engine.h"
#include "skin_engine/wps_internals.h"
#include "debug.h"
#define VPSTACK_DEPTH 16
@ -123,17 +122,7 @@ static void toggle_theme(enum screen_type screen, bool force)
/* remove the left overs from the previous screen.
* could cause a tiny flicker. Redo your screen code if that happens */
#ifdef HAVE_BACKDROP_IMAGE
int backdrop_id = sb_get_backdrop(screen);
if (get_current_activity() == ACTIVITY_WPS)
{
struct wps_data *sbs = skin_get_gwps(CUSTOM_STATUSBAR, screen)->data;
struct wps_data *wps = skin_get_gwps(WPS, screen)->data;
/* Extra framebuffer shared between WPS and SBS;
prevents flashing previous backdrop: */
if (wps->use_extra_framebuffer && sbs->use_extra_framebuffer)
backdrop_id = -1;
}
skin_backdrop_show(backdrop_id);
skin_backdrop_show(sb_get_backdrop(screen));
#endif
if (LIKELY(after_boot[screen]) && (!was_enabled[screen] || force))
{

View file

@ -542,7 +542,18 @@ static void gwps_leave_wps(bool theme_enabled)
struct gui_wps *gwps = skin_get_gwps(WPS, i);
gwps->display->scroll_stop();
if (theme_enabled)
{
#ifdef HAVE_BACKDROP_IMAGE
skin_backdrop_show(sb_get_backdrop(i));
/* The following is supposed to erase any traces of %VB
viewports drawn by the WPS. May need further thought... */
struct wps_data *sbs = skin_get_gwps(CUSTOM_STATUSBAR, i)->data;
if (gwps->data->use_extra_framebuffer && sbs->use_extra_framebuffer)
skin_update(CUSTOM_STATUSBAR, i, SKIN_REFRESH_ALL);
#endif
viewportmanager_theme_undo(i, skin_has_sbs(gwps));
}
}
#if defined(HAVE_LCD_ENABLE) || defined(HAVE_LCD_SLEEP)