diff options
author | Christian Soffke <christian.soffke@gmail.com> | 2021-12-14 19:36:25 +0100 |
---|---|---|
committer | Aidan MacDonald <amachronic@protonmail.com> | 2022-01-09 14:36:14 +0000 |
commit | fbdcfca085f65c402c9c660d6d5d097f357f43a1 (patch) | |
tree | a887b7aa06f072ccc2410aa2b4579c1bc1d39dcf /apps | |
parent | 3adeae2026d016ab608b19e3e6e1c5a8a05b99be (diff) | |
download | rockbox-fbdcfca085f65c402c9c660d6d5d097f357f43a1.tar.gz rockbox-fbdcfca085f65c402c9c660d6d5d097f357f43a1.zip |
ImageViewer: Improve smoothness of animated gif playback
Don't disable grayscale overlay, don't show "resize" messages
between frames and and don't clear display unless actually
necessary
Change-Id: I9f501d8280ce0c8f26f4345088d805d1b84cf143
Diffstat (limited to 'apps')
-rw-r--r-- | apps/plugins/imageviewer/gif/gif.c | 2 | ||||
-rw-r--r-- | apps/plugins/imageviewer/imageviewer.c | 8 |
2 files changed, 7 insertions, 3 deletions
diff --git a/apps/plugins/imageviewer/gif/gif.c b/apps/plugins/imageviewer/gif/gif.c index 31fd11d9a6..32c87c88d9 100644 --- a/apps/plugins/imageviewer/gif/gif.c +++ b/apps/plugins/imageviewer/gif/gif.c @@ -210,7 +210,7 @@ static int get_image(struct image_info *info, int frame, int ds) /* assign image buffer */ if (ds > 1) { - if (!iv->running_slideshow) + if (!iv->running_slideshow && (info->frames_count == 1)) { rb->lcd_putsf(0, 3, "resizing %d*%d", info->width, info->height); rb->lcd_update(); diff --git a/apps/plugins/imageviewer/imageviewer.c b/apps/plugins/imageviewer/imageviewer.c index a2b3bb680a..0dd140d1ab 100644 --- a/apps/plugins/imageviewer/imageviewer.c +++ b/apps/plugins/imageviewer/imageviewer.c @@ -915,7 +915,8 @@ static int load_and_show(char* filename, struct image_info *info) rb->lcd_update(); } - mylcd_ub_clear_display(); + if (frame == 0) + mylcd_ub_clear_display(); imgdec->draw_image_rect(info, 0, 0, info->width-info->x, info->height-info->y); mylcd_ub_update(); @@ -956,6 +957,7 @@ static int load_and_show(char* filename, struct image_info *info) get_view(info, &cx, &cy); cx /= zoom; /* prepare the position in the new image */ cy /= zoom; + mylcd_ub_clear_display(); } else continue; @@ -969,12 +971,14 @@ static int load_and_show(char* filename, struct image_info *info) } #ifdef USEGSLIB - grey_show(false); /* switch off overlay */ + if (info->frames_count <= 1) + grey_show(false); /* switch off overlay */ #endif rb->lcd_clear_display(); } while (status > PLUGIN_OTHER); #ifdef USEGSLIB + grey_show(false); /* switch off overlay */ rb->lcd_update(); #endif return status; |