From c1965ea8a9877a86293f90e47bbc370db2be1125 Mon Sep 17 00:00:00 2001 From: NiLuJe Date: Thu, 26 Jul 2018 00:46:52 +0200 Subject: [PATCH] Don't rotate on suspend for Kobo/PB when we're showing something news (#4111) that's not full-screen (i.e., "message" ScreenSaver mode). Fix #4098 --- frontend/device/generic/device.lua | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/frontend/device/generic/device.lua b/frontend/device/generic/device.lua index 4deb1ddd2..640dcb5b2 100644 --- a/frontend/device/generic/device.lua +++ b/frontend/device/generic/device.lua @@ -117,8 +117,10 @@ function Device:onPowerEvent(ev) end self:resume() require("ui/screensaver"):close() - -- restore to previous rotation mode - self.screen:setRotationMode(self.orig_rotation_mode) + -- restore to previous rotation mode, if need be. + if self.orig_rotation_mode then + self.screen:setRotationMode(self.orig_rotation_mode) + end if self:needsScreenRefreshAfterResume() then UIManager:scheduleIn(1, function() self.screen:refreshFull() end) end @@ -137,9 +139,15 @@ function Device:onPowerEvent(ev) self.powerd:beforeSuspend() local UIManager = require("ui/uimanager") logger.dbg("Suspending...") - -- always suspend in portrait mode - self.orig_rotation_mode = self.screen:getRotationMode() - self.screen:setRotationMode(0) + -- Mostly always suspend in portrait mode... + -- ... except when we just show an InfoMessage, it plays badly with landscape mode (c.f., #4098) + if G_reader_settings:readSetting("screensaver_type") ~= "message" then + self.orig_rotation_mode = self.screen:getRotationMode() + self.screen:setRotationMode(0) + else + -- nil it, in case user switched ScreenSaver modes during our lifetime. + self.orig_rotation_mode = nil + end require("ui/screensaver"):show() self.screen:refreshFull() self.screen_saver_mode = true