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

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

@ -1238,6 +1238,13 @@ function UIManager:getTime()
return self._now return self._now
end 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: -- precedence of refresh modes:
local refresh_modes = { fast = 1, ui = 2, partial = 3, flashui = 4, flashpartial = 5, full = 6 } 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, -- NOTE: We might want to introduce a "force_fast" that points to fast, but has the highest priority,

Loading…
Cancel
Save