diff --git a/frontend/device/generic/device.lua b/frontend/device/generic/device.lua index 05ff07b59..45f04753c 100644 --- a/frontend/device/generic/device.lua +++ b/frontend/device/generic/device.lua @@ -273,8 +273,8 @@ function Device:onPowerEvent(ev) end end self:resume() - Screensaver:close() - if self:needsScreenRefreshAfterResume() then + local widget_was_closed = Screensaver:close() + if widget_was_closed and self:needsScreenRefreshAfterResume() then UIManager:scheduleIn(1, function() self.screen:refreshFull() end) end self.screen_saver_mode = false diff --git a/frontend/device/kindle/device.lua b/frontend/device/kindle/device.lua index f268a4aa8..1b4ecbaf5 100644 --- a/frontend/device/kindle/device.lua +++ b/frontend/device/kindle/device.lua @@ -273,10 +273,12 @@ function Kindle:outofScreenSaver() if self.screen_saver_mode == true then if self:supportsScreensaver() then local Screensaver = require("ui/screensaver") - Screensaver:close() - -- And redraw everything in case the framework managed to screw us over... - local UIManager = require("ui/uimanager") - UIManager:nextTick(function() UIManager:setDirty("all", "full") end) + local widget_was_closed = Screensaver:close() + if widget_was_closed then + -- And redraw everything in case the framework managed to screw us over... + local UIManager = require("ui/uimanager") + UIManager:nextTick(function() UIManager:setDirty("all", "full") end) + end else -- Stop awesome again if need be... if os.getenv("AWESOME_STOPPED") == "yes" then diff --git a/frontend/ui/screensaver.lua b/frontend/ui/screensaver.lua index 775e2cf73..2ecb15f70 100644 --- a/frontend/ui/screensaver.lua +++ b/frontend/ui/screensaver.lua @@ -776,6 +776,9 @@ function Screensaver:close() self.delayed_close = true elseif screensaver_delay == "disable" then self:close_widget() + -- NOTE: Notify platforms that race with the native system (e.g., Kindle or needsScreenRefreshAfterResume) + -- that we've actually closed the widget *right now*. + return true elseif screensaver_delay == "gesture" then if self.screensaver_widget then self.screensaver_widget:showWaitForGestureMessage()