From 726259f5a1e038030ac0cd5ce788097e4403ea14 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Tue, 12 Jul 2016 23:53:23 -0700 Subject: [PATCH] reader(fix): fix crash when DAUTO_SAVE_PAGING_COUNT is set to 0 * setup autoSaveSettings callback on ReaderReady event * delay calling autoSaveSettings with UIManager:nextTick --- frontend/apps/reader/modules/readerview.lua | 35 +++++++++++++-------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/frontend/apps/reader/modules/readerview.lua b/frontend/apps/reader/modules/readerview.lua index b6e793699..de8726bb1 100644 --- a/frontend/apps/reader/modules/readerview.lua +++ b/frontend/apps/reader/modules/readerview.lua @@ -66,6 +66,7 @@ local ReaderView = OverlapGroup:new{ -- auto save settings after turning pages auto_save_paging_count = 0, + autoSaveSettings = function()end } function ReaderView:init() @@ -657,14 +658,14 @@ function ReaderView:onPageUpdate(new_page_no) self.state.page = new_page_no self:recalculate() self.highlight.temp = {} - self:autoSaveSettings() + UIManager:nextTick(self.autoSaveSettings) end function ReaderView:onPosUpdate(new_pos) self.state.pos = new_pos self:recalculate() self.highlight.temp = {} - self:autoSaveSettings() + UIManager:nextTick(self.autoSaveSettings) end function ReaderView:onZoomUpdate(zoom) @@ -721,17 +722,6 @@ function ReaderView:onSaveSettings() self.ui.doc_settings:saveSetting("page_overlap_style", self.page_overlap_style) end -function ReaderView:autoSaveSettings() - if DAUTO_SAVE_PAGING_COUNT then - if self.auto_save_paging_count == DAUTO_SAVE_PAGING_COUNT then - self.ui:saveSettings() - self.auto_save_paging_count = 0 - else - self.auto_save_paging_count = self.auto_save_paging_count + 1 - end - end -end - function ReaderView:getRenderModeMenuTable() local view = self local function make_mode(text, mode) @@ -784,4 +774,23 @@ function ReaderView:onCloseDocument() UIManager:unschedule(self.emitHintPageEvent) end +function ReaderView:onReaderReady() + if DAUTO_SAVE_PAGING_COUNT ~= nil then + if DAUTO_SAVE_PAGING_COUNT <= 0 then + self.autoSaveSettings = function() + self.ui:saveSettings() + end + else + self.autoSaveSettings = function() + if self.auto_save_paging_count == DAUTO_SAVE_PAGING_COUNT then + self.ui:saveSettings() + self.auto_save_paging_count = 0 + else + self.auto_save_paging_count = self.auto_save_paging_count + 1 + end + end + end + end +end + return ReaderView