diff options
author | William Wilgus <wilgus.william@gmail.com> | 2025-01-01 10:10:52 -0500 |
---|---|---|
committer | William Wilgus <me.theuser@yahoo.com> | 2025-01-02 11:22:32 -0500 |
commit | e65543cdc200a336a8a98c82ed86944bd79a03c3 (patch) | |
tree | 7a76c211e4bb7dee10449f3147c5482a209b9d49 | |
parent | f2dd48912045f09a44df7d6b058624d3a1d3d676 (diff) | |
download | rockbox-e65543cdc2.tar.gz rockbox-e65543cdc2.zip |
skin_backdrops cleanup
no functional changes.
remove some checks for screen when SCREEN_REMOTE
is not present
pack the skin_backdrop struct and use the space to remove
the static bool first_go variable
Change-Id: I17a96749d4995dd8124f3be4dd95bba58ee54b6d
-rw-r--r-- | apps/gui/skin_engine/skin_backdrops.c | 51 |
1 files changed, 36 insertions, 15 deletions
diff --git a/apps/gui/skin_engine/skin_backdrops.c b/apps/gui/skin_engine/skin_backdrops.c index eecf5b0433..debe392511 100644 --- a/apps/gui/skin_engine/skin_backdrops.c +++ b/apps/gui/skin_engine/skin_backdrops.c @@ -34,13 +34,14 @@ static struct skin_backdrop { char name[MAX_PATH]; char *buffer; - enum screen_type screen; - bool loaded; int buflib_handle; int ref_count; + bool initialized; + bool loaded; + bool UNUSED_; + int8_t screen; } backdrops[NB_BDROPS]; -#define NB_BDROPS SKINNABLE_SCREENS_COUNT*NB_SCREENS static int current_lcd_backdrop[NB_SCREENS]; bool skin_backdrop_get_debug(int index, char **path, int *ref_count, size_t *size) @@ -52,7 +53,7 @@ bool skin_backdrop_get_debug(int index, char **path, int *ref_count, size_t *siz *path = backdrops[index].name; *ref_count = backdrops[index].ref_count; -#if defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH > 1) +#if defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH > 1) /* HAVE_REMOTE_LCD */ enum screen_type screen = backdrops[index].screen; if (screen == SCREEN_REMOTE) *size = REMOTE_LCD_BACKDROP_BYTES; @@ -74,28 +75,28 @@ static int buflib_move_callback(int handle, void* current, void* new) break; } } - FOR_NB_SCREENS(i) - skin_backdrop_show(current_lcd_backdrop[i]); + FOR_NB_SCREENS(n) + skin_backdrop_show(current_lcd_backdrop[n]); return BUFLIB_CB_OK; } static struct buflib_callbacks buflib_ops = {buflib_move_callback, NULL, NULL}; -static bool first_go = true; + bool skin_backdrop_init(void) { - bool go_status = first_go; - if (first_go) + bool go_status = !backdrops[0].initialized; + if (go_status) { for (int i=0; i<NB_BDROPS; i++) { backdrops[i].buflib_handle = -1; backdrops[i].name[0] = '\0'; backdrops[i].buffer = NULL; + backdrops[i].initialized = true; backdrops[i].loaded = false; backdrops[i].ref_count = 0; } FOR_NB_SCREENS(i) current_lcd_backdrop[i] = -1; - first_go = false; } return go_status; } @@ -129,7 +130,11 @@ int skin_backdrop_assign(char* backdrop, char *bmpdir, free = i; break; } +#if !defined(HAVE_REMOTE_LCD) + else if (!strcmp(backdrops[i].name, filename)) +#else /* HAVE_REMOTE_LCD */ else if (!strcmp(backdrops[i].name, filename) && backdrops[i].screen == screen) +#endif { backdrops[i].ref_count++; break; @@ -139,7 +144,11 @@ int skin_backdrop_assign(char* backdrop, char *bmpdir, { strmemccpy(backdrops[free].name, filename, MAX_PATH); backdrops[free].buffer = NULL; +#if defined(HAVE_REMOTE_LCD) backdrops[free].screen = screen; +#else /* HAVE_REMOTE_LCD */ + (void) screen; +#endif backdrops[free].ref_count = 1; return free; } @@ -158,8 +167,10 @@ bool skin_backdrops_preload(void) if (backdrops[i].name[0] && !backdrops[i].buffer) { size_t buf_size; - enum screen_type screen = backdrops[i].screen; -#if defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH > 1) + + enum screen_type screen = SCREEN_MAIN; +#if defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH > 1) /* HAVE_REMOTE_LCD */ + screen = backdrops[i].screen; if (screen == SCREEN_REMOTE) buf_size = REMOTE_LCD_BACKDROP_BYTES; else @@ -222,9 +233,9 @@ void skin_backdrop_set_buffer(int backdrop_id, struct skin_viewport *svp) return; } - enum screen_type screen = backdrops[backdrop_id].screen; - svp->framebuf.ch_ptr = backdrops[backdrop_id].buffer; -#if defined(HAVE_REMOTE_LCD) + enum screen_type screen = SCREEN_MAIN; +#if defined(HAVE_REMOTE_LCD) /* HAVE_REMOTE_LCD */ + screen = backdrops[backdrop_id].screen; if (screen == SCREEN_REMOTE) svp->framebuf.elems = REMOTE_LCD_BACKDROP_BYTES / sizeof(fb_remote_data); else @@ -232,6 +243,7 @@ void skin_backdrop_set_buffer(int backdrop_id, struct skin_viewport *svp) { svp->framebuf.elems = LCD_BACKDROP_BYTES / sizeof(fb_data); } + svp->framebuf.ch_ptr = backdrops[backdrop_id].buffer; svp->framebuf.stride = 0; /* default stride */ svp->framebuf.get_address_fn = NULL; /*Default iterator*/ screens[screen].viewport_set_buffer(&svp->vp, &svp->framebuf); @@ -245,7 +257,12 @@ void skin_backdrop_show(int backdrop_id) current_lcd_backdrop[0] = -1; return; } +#if !defined(HAVE_REMOTE_LCD) + enum screen_type screen = SCREEN_MAIN; +#else /* HAVE_REMOTE_LCD */ enum screen_type screen = backdrops[backdrop_id].screen; +#endif + if ((backdrops[backdrop_id].loaded == false) || (backdrops[backdrop_id].name[0] == '-' && backdrops[backdrop_id].name[2] == '\0')) @@ -279,7 +296,11 @@ void skin_backdrop_load_setting(void) int i; for(i=0;i<SKINNABLE_SCREENS_COUNT*NB_SCREENS;i++) { +#if !defined(HAVE_REMOTE_LCD) + if (backdrops[i].name[0] == '-') +#else /* HAVE_REMOTE_LCD */ if (backdrops[i].name[0] == '-' && backdrops[i].screen == SCREEN_MAIN) +#endif { if (global_settings.backdrop_file[0] && global_settings.backdrop_file[0] != '-') |