From f57014cfc3beb9b8218d0093bad7de8b131fa517 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Fri, 20 Jun 2014 06:50:11 -0400 Subject: [PATCH] fix(kobo): partially fix suspend support Tested in Kobo Aura HD. Suspend can still be interrrupted if user touches the screen after slided the power button and before the suspend function is called (2s delay). Reason for this is still unkown. --- frontend/ui/uimanager.lua | 28 +++++++++++++++++----------- kobo/suspend.sh | 2 +- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/frontend/ui/uimanager.lua b/frontend/ui/uimanager.lua index ac6027e9b..5c34a6f21 100644 --- a/frontend/ui/uimanager.lua +++ b/frontend/ui/uimanager.lua @@ -220,6 +220,8 @@ end -- it is intended to manage input events and delegate -- them to dialogs function UIManager:run() + local suspend_msg = nil + self._running = true while self._running do local now = { util.gettime() } @@ -340,7 +342,6 @@ function UIManager:run() -- delegate input_event to handler if input_event then - --DEBUG("in ui.lua:", input_event) if input_event == "IntoSS" then self:sendEvent(Event:new("FlushSettings")) Device:intoScreenSaver() @@ -353,20 +354,25 @@ function UIManager:run() self:sendEvent(Event:new("NotCharging")) elseif input_event == "Light" then Device:getPowerDevice():toggleFrontlight() - elseif (input_event == "Power" and not Device.screen_saver_mode) - or input_event == "Suspend" then - local InfoMessage = require("ui/widget/infomessage") - self:show(InfoMessage:new{ - text = _("Standby"), - timeout = 1, - }) + elseif (input_event == "Power" or input_event == "Suspend") + and not Device.screen_saver_mode then + if not suspend_msg then + local InfoMessage = require("ui/widget/infomessage") + suspend_msg = InfoMessage:new{ + text = _("Suspended"), + } + end + self:show(suspend_msg) self:sendEvent(Event:new("FlushSettings")) Device:prepareSuspend() - self:scheduleIn(0.5, function() Device:Suspend() end) - elseif (input_event == "Power" and Device.screen_saver_mode) - or input_event == "Resume" then + self:scheduleIn(2, function() Device:Suspend() end) + elseif (input_event == "Power" or input_event == "Resume") + and Device.screen_saver_mode then Device:Resume() self:sendEvent(Event:new("Resume")) + if suspend_msg then + self:close(suspend_msg) + end elseif input_event == "SaveState" then self:sendEvent(Event:new("FlushSettings")) else diff --git a/kobo/suspend.sh b/kobo/suspend.sh index 4d0037cda..7dc47a589 100644 --- a/kobo/suspend.sh +++ b/kobo/suspend.sh @@ -2,7 +2,7 @@ export PATH=$PATH:/sbin:/usr/sbin #disable wifi -if lsmod | grep -q sdio_wifi_pwr ; then +if lsmod | grep -q sdio_wifi_pwr ; then wlarm_le -i eth0 down ifconfig eth0 down /sbin/rmmod -r dhd