AutoDim: Don't update footer if not necessary (#9192)

pull/9207/head
zwim 2 years ago committed by GitHub
parent 50b8b60400
commit def02846ec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -844,6 +844,7 @@ Widget that displays config menubar and config panel
local ConfigDialog = FocusManager:new{
--is_borderless = false,
name = "ConfigDialog",
panel_index = 1,
is_fresh = true,
}

@ -8,6 +8,7 @@ local UIManager = require("ui/uimanager")
local Screen = Device.screen
local ScreenSaverWidget = InputContainer:new{
name = "ScreenSaver",
widget = nil,
background = nil,
}

@ -37,6 +37,8 @@ function AutoDim:init()
self:_schedule_autodim_task()
self.isCurrentlyDimming = false -- true during or after the dimming ramp
self.trap_widget = nil
self.top_widget_before_dim = nil
end
function AutoDim:addToMainMenu(menu_items)
@ -164,7 +166,7 @@ end
function AutoDim:restoreFrontlight()
Device.powerd:setIntensity(self.autodim_save_fl)
UIManager:broadcastEvent(Event:new("UpdateFooter", true, true))
self:updateFooter(true)
self:_unschedule_ramp_task()
self:_schedule_autodim_task()
end
@ -186,10 +188,11 @@ function AutoDim:onResume()
if self.trap_widget then
UIManager:close(self.trap_widget)
self.trap_widget = nil
self.widget_before_dim = nil
end
UIManager:scheduleIn(1, function()
Device.powerd:setIntensity(self.autodim_save_fl)
UIManager:broadcastEvent(Event:new("UpdateFooter", true, true))
self:updateFooter(true)
end)
self.isCurrentlyDimming = false
end
@ -204,6 +207,19 @@ function AutoDim:onSuspend()
end
end
function AutoDim:updateFooter(clear)
-- update footer only if it is not covered by another widget
if self.top_widget_before_dim == "ReaderUI" or
(self.top_widget_before_dim ~= "ConfigDialog" and self.top_widget_before_dim ~= "ScreenSaver"
and self.top_widget_before_dim ~= "VirtualKeyboard") then
UIManager:broadcastEvent(Event:new("UpdateFooter", self.view and self.view.footer_visible or false))
end
if clear then
self.top_widget_before_dim = nil
end
end
function AutoDim:autodim_task()
if self.isCurrentlyDimming then return end
@ -218,6 +234,9 @@ function AutoDim:autodim_task()
end
}
-- This is the active widget before showing self.trap_widget
self.top_widget_before_dim = UIManager:getTopWidget()
UIManager:show(self.trap_widget) -- suppress taps during dimming
self.autodim_save_fl = Device.powerd:frontlightIntensity()
@ -248,7 +267,7 @@ function AutoDim:ramp_task()
self.ramp_event_countdown = self.ramp_event_countdown - 1
if self.ramp_event_countdown <= 0 then
-- Update footer on every self.ramp_event_countdown call
UIManager:broadcastEvent(Event:new("UpdateFooter", true, true))
self:updateFooter()
self.ramp_event_countdown = self.ramp_event_countdown_startvalue
end
self:_schedule_ramp_task() -- Reschedule only if not ready
@ -256,7 +275,7 @@ function AutoDim:ramp_task()
end
if fl_level == self.autodim_end_fl and self.ramp_event_countdown_startvalue > 0 then
-- Update footer at the end of the ramp.
UIManager:broadcastEvent(Event:new("UpdateFooter", true, true))
self:updateFooter()
end
end

Loading…
Cancel
Save