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).
pull/5105/head
NiLuJe 5 years ago committed by GitHub
parent 64cc7e0827
commit 38e7975728
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -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()

Loading…
Cancel
Save