summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Soffke <christian.soffke@gmail.com>2021-12-12 18:34:41 +0100
committerAidan MacDonald <amachronic@protonmail.com>2021-12-24 11:08:26 -0500
commit6c6f0757d7a902feb293be165d1490c42bc8e7ad (patch)
tree598135a544a1874a9514c1efd4a25828a884c0d3
parentf4fbc1bcebaca17b251fc8ef8729f317147dd9b0 (diff)
downloadrockbox-6c6f0757d7a902feb293be165d1490c42bc8e7ad.tar.gz
rockbox-6c6f0757d7a902feb293be165d1490c42bc8e7ad.zip
PictureFlow: Show background cache building progress
There was no easy way to see how far along PictureFlow was in building the art cache, once background scanning had commenced. PF now uses the screen area normally used by the FPS meter to show completed percentage until building the art cache has finished. Change-Id: I60fa7187b522cda219e35f5a9f630835ecac6883
-rw-r--r--apps/plugins/pictureflow/pictureflow.c25
1 files changed, 17 insertions, 8 deletions
diff --git a/apps/plugins/pictureflow/pictureflow.c b/apps/plugins/pictureflow/pictureflow.c
index 9592ac5266..35afdaf7e4 100644
--- a/apps/plugins/pictureflow/pictureflow.c
+++ b/apps/plugins/pictureflow/pictureflow.c
@@ -3467,30 +3467,32 @@ static inline void draw_gradient(int y, int h)
3467 3467
3468static void track_list_yh(int char_height) 3468static void track_list_yh(int char_height)
3469{ 3469{
3470 bool needs_space = pf_cfg.show_fps || aa_cache.inspected < pf_idx.album_ct;
3471
3470 switch (pf_cfg.show_album_name) 3472 switch (pf_cfg.show_album_name)
3471 { 3473 {
3472 case ALBUM_NAME_HIDE: 3474 case ALBUM_NAME_HIDE:
3473 pf_tracks.list_y = (pf_cfg.show_fps ? char_height : 0); 3475 pf_tracks.list_y = (needs_space ? char_height : 0);
3474 pf_tracks.list_h = LCD_HEIGHT - pf_tracks.list_y; 3476 pf_tracks.list_h = LCD_HEIGHT - pf_tracks.list_y;
3475 break; 3477 break;
3476 case ALBUM_NAME_BOTTOM: 3478 case ALBUM_NAME_BOTTOM:
3477 pf_tracks.list_y = (pf_cfg.show_fps ? char_height : 0); 3479 pf_tracks.list_y = (needs_space ? char_height : 0);
3478 pf_tracks.list_h = LCD_HEIGHT - pf_tracks.list_y - (char_height * 3); 3480 pf_tracks.list_h = LCD_HEIGHT - pf_tracks.list_y - (char_height * 3);
3479 break; 3481 break;
3480 case ALBUM_AND_ARTIST_TOP: 3482 case ALBUM_AND_ARTIST_TOP:
3481 pf_tracks.list_y = char_height * 3; 3483 pf_tracks.list_y = char_height * 3;
3482 pf_tracks.list_h = LCD_HEIGHT - pf_tracks.list_y - 3484 pf_tracks.list_h = LCD_HEIGHT - pf_tracks.list_y -
3483 (pf_cfg.show_fps ? char_height : 0); 3485 (needs_space ? char_height : 0);
3484 break; 3486 break;
3485 case ALBUM_AND_ARTIST_BOTTOM: 3487 case ALBUM_AND_ARTIST_BOTTOM:
3486 pf_tracks.list_y = (pf_cfg.show_fps ? char_height : 0); 3488 pf_tracks.list_y = (needs_space ? char_height : 0);
3487 pf_tracks.list_h = LCD_HEIGHT - pf_tracks.list_y - (char_height * 3); 3489 pf_tracks.list_h = LCD_HEIGHT - pf_tracks.list_y - (char_height * 3);
3488 break; 3490 break;
3489 case ALBUM_NAME_TOP: 3491 case ALBUM_NAME_TOP:
3490 default: 3492 default:
3491 pf_tracks.list_y = char_height * 3; 3493 pf_tracks.list_y = char_height * 3;
3492 pf_tracks.list_h = LCD_HEIGHT - pf_tracks.list_y - 3494 pf_tracks.list_h = LCD_HEIGHT - pf_tracks.list_y -
3493 (pf_cfg.show_fps ? char_height : 0); 3495 (needs_space ? char_height : 0);
3494 break; 3496 break;
3495 } 3497 }
3496} 3498}
@@ -3945,15 +3947,22 @@ static int pictureflow_main(void)
3945 last_update = current_update; 3947 last_update = current_update;
3946 frames = 0; 3948 frames = 0;
3947 } 3949 }
3948 /* Draw FPS */ 3950 /* Draw FPS or draw percentage of already built album cache */
3949 if (pf_cfg.show_fps) 3951 if (pf_cfg.show_fps || aa_cache.inspected < pf_idx.album_ct)
3950 { 3952 {
3951#ifdef USEGSLIB 3953#ifdef USEGSLIB
3952 mylcd_set_foreground(G_BRIGHT(255)); 3954 mylcd_set_foreground(G_BRIGHT(255));
3953#else 3955#else
3954 mylcd_set_foreground(G_PIX(255,0,0)); 3956 mylcd_set_foreground(G_PIX(255,0,0));
3955#endif 3957#endif
3956 rb->snprintf(fpstxt, sizeof(fpstxt), "FPS: %d", fps); 3958 if(aa_cache.inspected >= pf_idx.album_ct)
3959 rb->snprintf(fpstxt, sizeof(fpstxt), "FPS: %d", fps);
3960 else
3961 {
3962 int progress_pct = 100 * aa_cache.inspected / pf_idx.album_ct;
3963 rb->snprintf(fpstxt, sizeof(fpstxt), "%d %%", progress_pct);
3964 }
3965
3957 if (pf_cfg.show_album_name == ALBUM_NAME_TOP) 3966 if (pf_cfg.show_album_name == ALBUM_NAME_TOP)
3958 fpstxt_y = LCD_HEIGHT - 3967 fpstxt_y = LCD_HEIGHT -
3959 rb->screens[SCREEN_MAIN]->getcharheight(); 3968 rb->screens[SCREEN_MAIN]->getcharheight();