Readerview: fix checkAutoSaveSettings() with enabled standby (#8961)

reviewable/pr8962/r1
zwim 2 years ago committed by GitHub
parent 2aa310a931
commit d820dd84d6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -76,7 +76,7 @@ local ReaderView = OverlapGroup:extend{
-- in flipping state
flipping_visible = false,
-- to ensure periodic flush of settings
settings_last_save_tv = nil,
settings_last_save_btv = nil,
-- might be directly updated by readerpaging/readerrolling when
-- they handle some panning/scrolling, to request "fast" refreshes
currently_scrolling = false,
@ -1030,17 +1030,17 @@ end
function ReaderView:onReaderReady()
self.ui.doc_settings:delSetting("docsettings_reset_done")
self.settings_last_save_tv = UIManager:getTime()
self.settings_last_save_btv = UIManager:getElapsedTimeSinceBoot()
end
function ReaderView:onResume()
-- As settings were saved on suspend, reset this on resume,
-- as there's no need for a possibly immediate save.
self.settings_last_save_tv = UIManager:getTime()
self.settings_last_save_btv = UIManager:getElapsedTimeSinceBoot()
end
function ReaderView:checkAutoSaveSettings()
if not self.settings_last_save_tv then -- reader not yet ready
if not self.settings_last_save_btv then -- reader not yet ready
return
end
if G_reader_settings:nilOrFalse("auto_save_settings_interval_minutes") then
@ -1050,9 +1050,9 @@ function ReaderView:checkAutoSaveSettings()
local interval = G_reader_settings:readSetting("auto_save_settings_interval_minutes")
interval = TimeVal:new{ sec = interval*60, usec = 0 }
local now_tv = UIManager:getTime()
if now_tv - self.settings_last_save_tv >= interval then
self.settings_last_save_tv = now_tv
local now_btv = UIManager:getElapsedTimeSinceBoot()
if now_btv - self.settings_last_save_btv >= interval then
self.settings_last_save_btv = now_btv
-- I/O, delay until after the pageturn
UIManager:tickAfterNext(function()
self.ui:saveSettings()

@ -1238,6 +1238,13 @@ function UIManager:getTime()
return self._now
end
--[[--
Returns a TimeVal object corresponding to the last UI tick plus the time in standby.
]]
function UIManager:getElapsedTimeSinceBoot()
return self:getTime() + Device.total_standby_tv
end
-- precedence of refresh modes:
local refresh_modes = { fast = 1, ui = 2, partial = 3, flashui = 4, flashpartial = 5, full = 6 }
-- NOTE: We might want to introduce a "force_fast" that points to fast, but has the highest priority,

Loading…
Cancel
Save