credocument reader optimisation (avoid multiple TOC builds) (#3292)

Avoid unnecessary work in ReaderView:onSetViewMode() and
ReaderRolling:updatePos() that would result in TOC being reset
and rebuilt (which can take time on books with huge TOC) during
reader setup.
pull/3295/head
poire-z 7 years ago committed by GitHub
parent e5675af467
commit 26def92983

@ -94,6 +94,8 @@ function ReaderRolling:init()
table.insert(self.ui.postInitCallback, function()
self.doc_height = self.ui.document.info.doc_height
self.old_doc_height = self.doc_height
self.ui.document:_readMetadata()
self.old_page = self.ui.document.info.number_of_pages
end)
self.ui.menu:registerToMainMenu(self)
end

@ -746,9 +746,11 @@ function ReaderView:onMarginUpdate()
end
function ReaderView:onSetViewMode(new_mode)
self.view_mode = new_mode
self.ui.document:setViewMode(new_mode)
self.ui:handleEvent(Event:new("ChangeViewMode"))
if new_mode ~= self.view_mode then
self.view_mode = new_mode
self.ui.document:setViewMode(new_mode)
self.ui:handleEvent(Event:new("ChangeViewMode"))
end
return true
end

@ -96,9 +96,9 @@ function CreDocument:init()
-- @TODO check the default view_mode to a global user configurable
-- variable 22.12 2012 (houqp)
local ok
ok, self._document = pcall(cre.newDocView,
Screen:getWidth(), Screen:getHeight(), self.PAGE_VIEW_MODE
)
ok, self._document = pcall(cre.newDocView, Screen:getWidth(), Screen:getHeight(),
DCREREADER_VIEW_MODE == "scroll" and self.SCROLL_VIEW_MODE or self.PAGE_VIEW_MODE
) -- this mode must be the same as the default one set as ReaderView.view_mode
if not ok then
error(self._document) -- will contain error message
end

Loading…
Cancel
Save