From e1c3448d0ec9d322836fdb7c47eaa2c5b16ca15a Mon Sep 17 00:00:00 2001 From: poire-z Date: Sun, 4 Dec 2016 15:22:05 +0100 Subject: [PATCH] ImageWidget optimisations (#2394) Avoid multiple renderings. Don't cache big images (ie: screensaver images) --- frontend/ui/widget/imagewidget.lua | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/frontend/ui/widget/imagewidget.lua b/frontend/ui/widget/imagewidget.lua index ae6bd890e..fa0ced9b0 100644 --- a/frontend/ui/widget/imagewidget.lua +++ b/frontend/ui/widget/imagewidget.lua @@ -83,14 +83,18 @@ function ImageWidget:_loadfile() -- hit cache self._bb = cache.bb else - -- cache this image - DEBUG("cache", hash) - cache = ImageCacheItem:new{ - bb = Mupdf.renderImageFile(self.file, self.width, self.height), - } - cache.size = cache.bb.pitch * cache.bb.h * cache.bb:getBpp() / 8 - ImageCache:insert(hash, cache) - self._bb = cache.bb + if self.height and self.height > 200 then -- don't cache big images + self._bb = Mupdf.renderImageFile(self.file, self.width, self.height) + else + -- cache this image + DEBUG("cache", hash) + cache = ImageCacheItem:new{ + bb = Mupdf.renderImageFile(self.file, self.width, self.height), + } + cache.size = cache.bb.pitch * cache.bb.h * cache.bb:getBpp() / 8 + ImageCache:insert(hash, cache) + self._bb = cache.bb + end end else error("Image file type not supported.") @@ -98,6 +102,9 @@ function ImageWidget:_loadfile() end function ImageWidget:_render() + if self._bb then -- already rendered + return + end if self.image then self:_loadimage() elseif self.file then