summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorChristian Soffke <christian.soffke@gmail.com>2021-12-14 19:36:25 +0100
committerAidan MacDonald <amachronic@protonmail.com>2022-01-09 14:36:14 +0000
commitfbdcfca085f65c402c9c660d6d5d097f357f43a1 (patch)
treea887b7aa06f072ccc2410aa2b4579c1bc1d39dcf /apps
parent3adeae2026d016ab608b19e3e6e1c5a8a05b99be (diff)
downloadrockbox-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.c2
-rw-r--r--apps/plugins/imageviewer/imageviewer.c8
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;