From fd9e3d57f33e5d40f74433590b1f8d9f7e0fb276 Mon Sep 17 00:00:00 2001 From: chrox Date: Thu, 28 Aug 2014 13:22:31 +0800 Subject: [PATCH] fix performance issue of screensaver on Kobo now loadDocument will not render the document and getCoverPageImage will be much faster. --- frontend/apps/reader/readerui.lua | 4 ++-- frontend/document/credocument.lua | 14 ++++++++++---- koreader-base | 2 +- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/frontend/apps/reader/readerui.lua b/frontend/apps/reader/readerui.lua index dc5c3be0c..b4c627d97 100644 --- a/frontend/apps/reader/readerui.lua +++ b/frontend/apps/reader/readerui.lua @@ -220,9 +220,9 @@ function ReaderUI:init() document = self.document, }) else - -- make sure we load document first before calling any callback + -- make sure we render document first before calling any callback table.insert(self.postInitCallback, function() - self.document:loadDocument() + self.document:render() end) -- typeset controller table.insert(self, ReaderTypeset:new{ diff --git a/frontend/document/credocument.lua b/frontend/document/credocument.lua index 92401523a..54ff68cd1 100644 --- a/frontend/document/credocument.lua +++ b/frontend/document/credocument.lua @@ -108,20 +108,25 @@ function CreDocument:init() -- set fallback font face self._document:setStringProperty("crengine.font.fallback.face", self.fallback_font) + -- set visible page count in landscape + if math.max(Screen:getWidth(), Screen:getHeight()) / Screen:getDPI() + < DCREREADER_TWO_PAGE_THRESHOLD then + self:setVisiblePageCount(1) + end + self.is_open = true self.info.has_pages = false self:_readMetadata() self.info.configurable = true end -function CreDocument:loadDocument() +function CreDocument:render() + -- load document before rendering self._document:loadDocument(self.file) + self._document:renderDocument() if not self.info.has_pages then self.info.doc_height = self._document:getFullHeight() end - if math.max(Screen:getWidth(),Screen:getHeight())/Screen:getDPI() < DCREREADER_TWO_PAGE_THRESHOLD then - self:setVisiblePageCount(1) - end end function CreDocument:close() @@ -133,6 +138,7 @@ function CreDocument:getPageCount() end function CreDocument:getCoverPageImage() + -- don't need to render document in order to get cover image self._document:loadDocument(self.file) local data, size = self._document:getCoverPageImageData() if data and size then diff --git a/koreader-base b/koreader-base index 446aa9314..11a738de4 160000 --- a/koreader-base +++ b/koreader-base @@ -1 +1 @@ -Subproject commit 446aa931453c0c18ecdc7e94cf827730de6bd31d +Subproject commit 11a738de463d3c3e9c776ab10a35447bb445d717