mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
Readerview: fix checkAutoSaveSettings() with enabled standby (#8961)
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user