From c97d20cd2489d5e31d01f986946a114336d4c59c Mon Sep 17 00:00:00 2001 From: NiLuJe Date: Fri, 12 Jan 2024 21:23:23 +0100 Subject: [PATCH] Chore: Make sure we always pass a rect to `fb:refreshFull` (#11307) * UIManager: Init a full Geom on region-less refreshes in _refresh * Never call refreshFull with no arguments I got rid of the low-level nil guards, because UIManager itself guarantees that it can never happen * Bump base (https://github.com/koreader/koreader-base/pull/1718) (fix #11303) * Kindle: Re-enable HW dithering on the Scribe Now that the underlying issue is fixed in base ;). --- base | 2 +- frontend/device/generic/device.lua | 4 ++-- frontend/device/kindle/device.lua | 2 +- frontend/ui/screensaver.lua | 2 +- frontend/ui/uimanager.lua | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/base b/base index d83148b27..5f9b9b6f8 160000 --- a/base +++ b/base @@ -1 +1 @@ -Subproject commit d83148b27e25b9332678221f6737d66be7e73318 +Subproject commit 5f9b9b6f89d6865ba0247adc09aecaa593c9e03f diff --git a/frontend/device/generic/device.lua b/frontend/device/generic/device.lua index db72e7cff..f5d3ec887 100644 --- a/frontend/device/generic/device.lua +++ b/frontend/device/generic/device.lua @@ -326,7 +326,7 @@ function Device:onPowerEvent(ev) self:resume() local widget_was_closed = Screensaver:close() if widget_was_closed and self:needsScreenRefreshAfterResume() then - UIManager:scheduleIn(1, function() self.screen:refreshFull() end) + UIManager:scheduleIn(1, function() self.screen:refreshFull(0, 0, self.screen:getWidth(), self.screen:getHeight()) end) end self.powerd:afterResume() end @@ -371,7 +371,7 @@ function Device:onPowerEvent(ev) -- and on platforms where we defer to a system tool, it'd probably suspend too early! -- c.f., #6676 if self:needsScreenRefreshAfterResume() then - self.screen:refreshFull() + self.screen:refreshFull(0, 0, self.screen:getWidth(), self.screen:getHeight()) end -- NOTE: In the same vein as above, make sure we update the screen *now*, before dealing with Wi-Fi. UIManager:forceRePaint() diff --git a/frontend/device/kindle/device.lua b/frontend/device/kindle/device.lua index 9b56bc619..6e333a960 100644 --- a/frontend/device/kindle/device.lua +++ b/frontend/device/kindle/device.lua @@ -639,7 +639,7 @@ local KindleScribe = Kindle:extend{ hasGSensor = yes, display_dpi = 300, touch_dev = "/dev/input/touch", - canHWDither = no, + canHWDither = yes, canDoSwipeAnimation = yes, } diff --git a/frontend/ui/screensaver.lua b/frontend/ui/screensaver.lua index 94517d082..7bf6f792e 100644 --- a/frontend/ui/screensaver.lua +++ b/frontend/ui/screensaver.lua @@ -529,7 +529,7 @@ function Screensaver:show() if self:withBackground() then Screen:clear() end - Screen:refreshFull() + Screen:refreshFull(0, 0, Screen:getWidth(), Screen:getHeight()) -- On Kobo, on sunxi SoCs with a recent kernel, wait a tiny bit more to avoid weird refresh glitches... if Device:isKobo() and Device:isSunxi() then diff --git a/frontend/ui/uimanager.lua b/frontend/ui/uimanager.lua index 3e2464946..412e95fd7 100644 --- a/frontend/ui/uimanager.lua +++ b/frontend/ui/uimanager.lua @@ -1170,7 +1170,7 @@ function UIManager:_refresh(mode, region, dither) end -- if no region is specified, use the screen's dimensions - region = region or Geom:new{w=Screen:getWidth(), h=Screen:getHeight()} + region = region or Geom:new{x = 0, y = 0, w = Screen:getWidth(), h = Screen:getHeight()} -- if no dithering hint was specified, don't request dithering dither = dither or false