mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
More robust Gyro toggle (#5104)
* Make toggling Gyro events more robust Actually ask to turn it on/off depending on the setting, instead of a blind toggle A quick succession of suspend/resume events could otherwise leave it in an unexpected state (i.e., off when it should have been on).
This commit is contained in:
@@ -948,7 +948,7 @@ function ReaderGesture:gestureAction(action, ges)
|
||||
self:onShowFLOnOff()
|
||||
elseif action == "toggle_gsensor" then
|
||||
G_reader_settings:flipNilOrFalse("input_ignore_gsensor")
|
||||
Device:toggleGSensor()
|
||||
Device:toggleGSensor(not G_reader_settings:isTrue("input_ignore_gsensor"))
|
||||
self:onGSensorToggle()
|
||||
elseif action == "toggle_page_flipping" then
|
||||
if not self.ui.document.info.has_pages then
|
||||
|
||||
@@ -283,7 +283,7 @@ function Device:setDateTime(year, month, day, hour, min, sec) end
|
||||
function Device:saveSettings() end
|
||||
|
||||
-- Device specific method for toggling the GSensor
|
||||
function Device:toggleGSensor() end
|
||||
function Device:toggleGSensor(toggle) end
|
||||
|
||||
--[[
|
||||
prepare for application shutdown
|
||||
|
||||
@@ -696,14 +696,29 @@ function Input:handleMiscEvNTX(ev)
|
||||
end
|
||||
|
||||
-- Allow toggling it at runtime
|
||||
function Input:toggleMiscEvNTX()
|
||||
if self.isNTXAccelHooked then
|
||||
self.handleMiscEv = function() end
|
||||
function Input:toggleMiscEvNTX(toggle)
|
||||
if toggle and toggle == true then
|
||||
-- Honor Gyro events
|
||||
if not self.isNTXAccelHooked then
|
||||
self.handleMiscEv = self.handleMiscEvNTX
|
||||
self.isNTXAccelHooked = true
|
||||
end
|
||||
elseif toggle and toggle == false then
|
||||
-- Ignore Gyro events
|
||||
if self.isNTXAccelHooked then
|
||||
self.handleMiscEv = function() end
|
||||
self.isNTXAccelHooked = false
|
||||
end
|
||||
else
|
||||
self.handleMiscEv = self.handleMiscEvNTX
|
||||
end
|
||||
-- Toggle it
|
||||
if self.isNTXAccelHooked then
|
||||
self.handleMiscEv = function() end
|
||||
else
|
||||
self.handleMiscEv = self.handleMiscEvNTX
|
||||
end
|
||||
|
||||
self.isNTXAccelHooked = not self.isNTXAccelHooked
|
||||
self.isNTXAccelHooked = not self.isNTXAccelHooked
|
||||
end
|
||||
end
|
||||
|
||||
-- helpers for touch event data management:
|
||||
|
||||
@@ -716,11 +716,11 @@ function Kobo:reboot()
|
||||
os.execute("reboot")
|
||||
end
|
||||
|
||||
function Kobo:toggleGSensor()
|
||||
function Kobo:toggleGSensor(toggle)
|
||||
if self:canToggleGSensor() and self.input then
|
||||
-- Currently only supported on the Forma
|
||||
if self.misc_ntx_gsensor_protocol then
|
||||
self.input:toggleMiscEvNTX()
|
||||
self.input:toggleMiscEvNTX(toggle)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -8,6 +8,6 @@ return {
|
||||
end,
|
||||
callback = function()
|
||||
G_reader_settings:flipNilOrFalse("input_ignore_gsensor")
|
||||
Device:toggleGSensor()
|
||||
Device:toggleGSensor(not G_reader_settings:isTrue("input_ignore_gsensor"))
|
||||
end,
|
||||
}
|
||||
|
||||
@@ -95,7 +95,7 @@ function UIManager:init()
|
||||
self.event_handlers["Suspend"] = function()
|
||||
-- Ignore the accelerometer (if that's not already the case) while we're alseep
|
||||
if G_reader_settings:nilOrFalse("input_ignore_gsensor") then
|
||||
Device:toggleGSensor()
|
||||
Device:toggleGSensor(false)
|
||||
end
|
||||
self:_beforeSuspend()
|
||||
Device:onPowerEvent("Suspend")
|
||||
@@ -105,7 +105,7 @@ function UIManager:init()
|
||||
self:_afterResume()
|
||||
-- Stop ignoring the accelerometer (unless requested) when we wakeup
|
||||
if G_reader_settings:nilOrFalse("input_ignore_gsensor") then
|
||||
Device:toggleGSensor()
|
||||
Device:toggleGSensor(true)
|
||||
end
|
||||
end
|
||||
self.event_handlers["PowerPress"] = function()
|
||||
|
||||
Reference in New Issue
Block a user