Commit Graph

896 Commits

Author SHA1 Message Date
NiLuJe
33b54f5574 Kindle: Add a hasLightSensor devcap, and use it in the AutoFrontlight plugin (#11255)
Add the Scribe to the list while we're there
2023-12-24 17:15:30 +01:00
zwim
c30c1ff11f DeviceListener: Rejig calculateGestureDelta algorithm
Get rid of the silly precomputed tables, and do More Maths(TM) instead!
Thanks to @zwim for the magic sauce ;).

Minor simplification of the API while I'm in there, and unify the warmth
computations, do everything in the native scale (much like what
effectively happens for intensity) to workaround the silly public API
being an unhelpful PITA, ensuring consistent & effective changes.
2023-12-17 01:03:10 +01:00
NiLuJe
a2e0642998 Cervantes: Make sure the warmth scaling is accurate
For some mysterious reason, we init fl_warmth_max to 100 on Kobo &
Cervantes, despite this being the case on absolutely none of them.

TL;DR: We update it according to nl_max during init, but this was
missing on Cervantes.
2023-12-17 01:03:10 +01:00
NiLuJe
ff58ac7a65 DeviceListener: Handle non-gesture warmth increment in the native scale
Re: #11220
Followup to #6468
2023-12-17 01:03:10 +01:00
Frans de Jonge
13a521c398 AppImage: remove hasMultiTouch = no (#11212)
SDL supports multitouch since https://github.com/koreader/koreader-base/pull/1599
2023-12-08 10:12:22 +01:00
NiLuJe
18fff200ac GestureDetector: Be even *more* defensive with initial_tev records
Apparently, #11198 wasn't defensive enough...

Make those visible warnings, so we can see how much they actually happen
in the wild...

Closes #11209
2023-12-08 05:35:34 +01:00
NiLuJe
3c63a5d8a8 GestureDetector: Switch buddy contacts to voidState in a safer manner (#11198)
Some platforms with horribly broken MT handling (hai, PB) will manage to
screw something up so bad that we end up with slots never running
through initialState on a contact down, so they never get an initial_tev
recorded.

Ensure we do that if necessary when switching a buddy to voidState to
avoid crashes throughout the code, which assumes everything is sane and
doesn't guard accesses to initial_tev

Re: #11196, #10950 & #11111
Closes: #11111
2023-12-04 22:01:52 +01:00
NiLuJe
4a64e02c68 ScreenSaverLock: Hide the popup on suspend (#11174)
Fix #11164 and involves a drive-by fix:

Kindle: Send Suspend/Resume event regardless of the screen saver state

If we get the events, it means stuff happened, we can't just only honor
it in the most common workflows ;).

This effectively reverts a tiny bit of #10426 (I was sort of expecting
this to be problematic at the time, and I most likely hadn't tested it).
2023-11-29 00:15:50 +01:00
mergen3107
33c7f05158 Kindle scribe gyro and pen support (#11159)
* Kindle Scribe: add G-sensor and pen support, fix startup orientation

* Fixes #11144 and #11156
2023-11-28 07:07:18 -05:00
NiLuJe
9af3e95d9d Kindle: Fix a smattering of frontlight bugs
* afterResume had *two* different implementations, so the historical one
  that handled frontlight fixups no longer ran
  (regression since #10426)
* isFrontlightOn was completely broken, for a couple of reasons:
  * There was no is isFrontlightOnHW implementation, so when it ran, it
    mostly always thought the frontlight was on, because
    self.fl_intensity doesn't change on toggle off.
  * _decideFrontlightState was never called on Kindle,
    so isFrontlightOnHW was never really called, making isFrontlightOn
    completely useless. Call it in setIntensityHW's coda, as it ought to
    be. And properly document that.

Generic *was* calling _decideFrontlightState is setIntensity, but
*before* actually setting the frontlight, which makes no goddamn sense,
so get rid of that, too.

* Also fix frontlight toggle notifications (regression since #10305)

TL;DR: The PowerD API being a mess strikes again.
2023-11-25 20:53:36 +01:00
NiLuJe
bf03f40ef2 Dispatcher: Allow toggling USBMS (#11123)
It's right next to actual exit/restart actions, so it'll never ask for confirmation.
2023-11-22 18:59:07 +01:00
NiLuJe
bc7ea8602e UIManager: Don't block gestures for new widgets when input is disabled (#11122)
They'll be disabled again when the widget in question is dismissed.

This exposes a couple of semi-obvious but edge-casey footguns to the user, but a hardened implementation is way uglier. See PR for details.
2023-11-22 18:56:47 +01:00
ElimGarak1
2e2ca76a03 Add new PocketBook InkPad Color 3 (743K3) (#11079)
To add the new PocketBook InkPad Color 3 (743K3) with E Ink Kaleido™ 3 screen.
2023-11-05 13:23:11 +01:00
NiLuJe
94a82087de Device: Don't leave hasSeamlessWifiToggle enabled when hasWifiToggle is disabled (#11060)
Fix #11059
2023-11-02 23:41:21 +01:00
NiLuJe
fee2b79829 Kindle: The KT5 requires the same input delving shenanigans as the PW5 (#11064) 2023-11-02 23:40:43 +01:00
NiLuJe
d805a69446 Open input device outside of the readdir loop to workaround a bug in the
input backend
2023-10-30 08:41:23 +01:00
NiLuJe
84e942a326 Kindle: Auto-detect the input device on the PW5
Apparently, the by-path symlink went poof
2023-10-30 08:41:23 +01:00
NiLuJe
6e08809419 Kindle: Amend #11049 comments (#11051)
Turns out it's not really specific to the Signature Edition
2023-10-29 15:48:21 +01:00
NiLuJe
12bea3b14b Kindle: Handle the PW5 SE properly (#11049)
Need to poke elsewhere for its Input device

Fix #11048
2023-10-29 08:56:54 +01:00
NiLuJe
2c5d618f6b Kindle: Initial Scribe support (#11047)
Assuming Bellatrix3 boards are extremely similar to their Bellatrix brethren...

Fix #11045
2023-10-29 05:12:45 +01:00
NiLuJe
fed24ba28c UIManager: Always send PowerOff & Reboot events
They were only sent when said action was triggered manually.

Note that this is perfectly harmless, since, currently,
nothing actually responds to those events ;).
2023-10-16 02:59:27 +02:00
NiLuJe
c47ce45fb8 WakeupMgr: Forward rtc_dev & dodgy_rtc to the backend 2023-10-16 02:59:27 +02:00
hasezoey
ee7a6455ce Device:Android: always call "_decideFrontlightState" in "setIntensityHW" (#10737)
re https://github.com/koreader/koreader/pull/10731#discussion_r1271505121

This PR changes so that androids implementation of `setIntensityHW` always calls `_decideFrontlightState`
2023-10-12 15:05:20 +02:00
ElimGarak1
5b916cccff Add new PocketBook PB-Basic Lux 4 (PB618) (#10987) 2023-10-12 14:53:08 +02:00
poire-z
bbf923c7a8 BookMap/PageBrowser: allow mousewheel scrolling
Also fix SDL to use sendEvent() instead of broadcastEvent(),
so such BookMap scrolling doesn't also scroll pages in the
book below.
2023-10-09 00:15:05 +02:00
NiLuJe
2ff60ce04f Kobo: Deal with some more frontlight edge cases on devices with the AW99703 PWM controller (#10971)
Namely, skip ramping when going to/from <= 2% frontlight, otherwise we just eat the delay for no good reason (1%), or it just stutters and looks bad (2%).

Fix #10970
2023-10-06 17:40:07 +02:00
hrdl
4875f63f09 sdl: ensure dialogs are displayed after window change events (#10929)
Fix #10927

Co-authored-by: NiLuJe <ninuje@gmail.com>
2023-09-28 19:50:02 +02:00
ElimGarak1
ed885a79b2 [PocketBook] Add PB-Verse_(PB629) and PB-Verse Pro_(PB634) (#10938)
Closes #10913.
2023-09-25 22:41:09 +02:00
NiLuJe
55ea10655f Revert "Kobo: Disable HW inversion on MTK (#10841)" (#10928)
This reverts commit e7e0d2edb6.

Whatever's actually going on with nightmode, this isn't it.
This was independently confirmed to behave as expected,
and the issue that prompted this was *not* fixed by this commit.
2023-09-22 18:41:12 +02:00
NiLuJe
34ba2fab30 NetworkMgr: Handle non-blocking turnOnWifi implementations better (#10863)
* Device: Add a `hasSeamlessWifiToggle` devcap to complement `hasWifiToggle`, to denote platforms where we can toggle WiFi without losing focus, as this has obvious UX impacts, and less obvious technical impacts on some of the NetworkMgr innards...
* Android: Mark as `!hasSeamlessWifiToggle`, as it requires losing focus to the system settings. Moreover, `turnOnWifi` returns *immediately* and we *still* run in the background during that time, for extra spiciness...
* NetworkMgr: Ensure only *one* call to `turnOnWifi` will actually go on when stuff gets re-scheduled by the `beforeWifiAction` framework.
* NetworkMgr: Ensure the `beforeWifiAction` framework will not re-schedule the same thing *ad vitam aeternam* if a previous connection attempt is still ongoing. (i.e., previously, on Android, if you backed out of the system settings, you entered the Benny Hill dimension, as NetworkMgr would keep throwing you back into the system settings ;p). This has a few implications on callbacks requested by subsequent connection attempts, though. Generally, we'll try to honor *explicitly interactive* callbacks, but `beforeWifiAction` stuff will be dropped (only the original cb is preserved). That's what prevents the aforementioned infinite loop, as the `beforeWifiAction` framework was based on the assumption that `turnOnWifi` somewhat guaranteed `isConnected` to be true on return, something which is only actually true on `hasWifiManager` platforms.
* NetworkMgr: In `prompt` mode, the above implies that the prompt will not even be shown for concurrent attempts, as it's otherwise extremely confusing (KOSync on Android being a prime example, as it has a pair of Suspend/Resume handlers, so the initial attempt trips those two because of the focus switch >_<").
* NetworkMgr: Don't attempt to kill wifi when aborting a connection attempt on `!hasSeamlessWifiToggle` (because, again, it'll break UX, and also because it might run at very awkward times (e.g., I managed to go back to KOReader *between* a FM/Reader switch at one point, which promptly caused `UIManager` to exit because there was nothing to show ;p).
* NetworkMgr: Don't drop the connectivity callback when `beforeWifiAction` is set to prompt and the target happens to use a connectivity check in its `turnOnWifi` implementation (e.g., on Kindle).
* Android: Add an `"ignore"` `beforeWifiAction` mode, that'll do nothing but schedule the connectivity check with its callback (with the intent being the system will eventually enable wifi on its own Soon(TM)). If you're already online, the callback will run immediately, obviously. If you followed the early discussions on this PR, this closely matches what happens on `!hasWifiToggle` platforms (as flagging Android that way was one of the possible approaches here).
* NetworkMgr: Bail out early in `goOnlineToRun` if `beforeWifiAction` isn't `"turn_on"`. Prompt cannot work there, and while ignore technically could, it would serve very little purpose given its intended use case.
* KOSync: Neuter the Resume/Suspend handlers early on `CloseDocument`, as this is how focus switches are handled on Android, and if `beforeWifiAction` is `turn_on` and you were offline at the time, we'd trip them because of the swap to system settings to enable wifi.
* KOSync: Allow `auto_sync` to be enabled regardless of the `beforeWifiAction` mode on `!hasSeamlessWifiToggle` platforms. Prompt is still a terrible idea, but given that `goOnlineToRun` now aborts early if the mode is not supported, it's less of a problem.
2023-09-21 18:21:09 +02:00
NiLuJe
2b13cd7dcb Device: Make sure input_no_key_repeat survives a suspend/resume cycle (#10904)
I somehow assumed the repeat state snapshot used for restore was taken *after* disabling repeat, but obviously not ;o).

Fix #10902
2023-09-18 18:54:21 +02:00
NiLuJe
4d620d9fd2 Device: Try harder to properly setup the charging LED on plug/unplug (#10855)
By debouncing the call and delaying it some more.
2023-09-01 22:51:21 +02:00
zwim
bedd422669 AutoSuspend: Handle a few corner-cases better (#10797)
* Enforce a minimal standby timer for the first standby after a resume.
* On Kobo, sleep a bit before standby.

This aims to alleviate race conditions causing visible refresh glitches on sunxi, especially when using an extremely low standby timer (i.e., below the defaults).
2023-09-01 17:55:24 +02:00
NiLuJe
e7e0d2edb6 Kobo: Disable HW inversion on MTK (#10841)
Apparently, that doesn't quite work...

Followup to #10719
2023-08-25 20:53:11 +02:00
NiLuJe
21de1a832e Main: Move the G_reader_settings flush to Device:exit
I don't trust PB's input.closeAll not to be doing something wonky that
would trip an early abort.
2023-08-19 17:25:10 +02:00
NiLuJe
d1bbdb5dad PocketBook: Run Generic:exit *last*
Makes more sense this way.

Re: #10828

Also clarify the UIManager "no dialogs left" message, and drop the
return value, as it's meaningless, we just want to break & return.
2023-08-19 17:25:10 +02:00
NiLuJe
5146358605 NetworkManager: Allow backends to report connection failures early
As early as turnOnWifi.
Implement it on hasWifiManager platforms, preventing useless
connectivity checks to run when they're obviously never going to work
because you're out of range of your AP.

Also implemented a flag to notify the backend if the connection attempt
was interactive or not.
Right now, interactive is extremely restricted, it basically means the
menu checkmark, or a gesture.
The intent being that for stuff like the beforeWifiAction framework, we
don't want the backend to spawn extra UI.
Specifically, for hasWifiManager platforms, we no longer spawn the AP
scan list on failure unless the caller was interactive.

TL;DR: beforeWifiAction is now much less obnoxious when you're obviously
not able to connect.
2023-08-15 21:24:11 +02:00
NiLuJe
22678ee5ff Misc: Review pass on the previous commits
* Unbreak the Device test
* Rename a few things
* Tweak a few comments
2023-08-15 21:24:11 +02:00
NiLuJe
f44f92a864 Kobo: Run Generic:init dead last, like every other platform
This is semantically more correct, and should prevent platform-specific
weirdness if an ordering concern ever comes up (e.g., like it did for
the viewport stuff).
2023-08-15 21:24:11 +02:00
NiLuJe
71378b0b50 Startup: Move Device ctor/dtor shenanigans to the actual Device
constructors and destructors

No need to leak implementation details in there.
2023-08-15 21:24:11 +02:00
NiLuJe
e9a84ca434 Reader: Move the "print exit code in a file" hack to the PB
implementation, where this mess belongs.

No other platform relies on this (because, spoiler alert, InkView \o/).
2023-08-15 21:24:11 +02:00
NiLuJe
f4aca567ef Kobo: Allow disabling key repeats
Re #10743

Note that this only makes faulty switches slightly less annoying: for a
stuck switch, instead of a string of page turns, you'll get a single
missed page turn on the tap that actually releases the stuck contact...
2023-08-15 21:24:11 +02:00
NiLuJe
0db7509fe2 Kobo: Fix the input translation on the Elipsa 2E (#10802)
Apparently it mirrors on the Y axis. Or the panel vs. touch rotations are wonkier than expected or ...something.
2023-08-12 02:47:42 +02:00
zwim
ac143ca9d6 Add forgotten f:close() (#10796) 2023-08-09 19:24:46 +02:00
yparitcher
f3fc2ac353 do not allow clipboard to be nil
we use it as text anyway and test if it is the empty string also.

this fixes a crash in viewhtml when holding a selector with an empty clipboard, we try to contcate getClipboardText which is nil (on !SDL & !Android)
2023-08-08 16:15:40 -04:00
NiLuJe
9c8e55b3e5 Kobo: Yet another attempt at working around the hangs on the latest NXP boards (#10771)
* Notification: Drop the fencing from #10083; it never actually helped, and had subtle side-effects we could do without.
* VirtualKeyBoard: Flash on close, otherwise, some of the fast refresh glitches may be burned into the working buffer until a flash. Making sure we flash ourselves prevent it from sticking around on the page ;).
* util: Move `writeToSysfs` to base (i.e., `ffi/util`), as we need it there (and it actually makes more sense there anyway ;p).
* Bump base for https://github.com/koreader/koreader-base/pull/1645, which is where the actual workaround (hopefully) lives.

Re #8414, #9806, #10558
2023-08-01 23:53:10 +02:00
NiLuJe
689d9e2976 Kobo: Initial Elipsa 2E support (#10719)
Untested, but mostly everything should be there ;p.

Bumps base for MTK support (https://github.com/koreader/koreader-base/pull/1642)
2023-08-01 20:26:02 +02:00
NiLuJe
9ceb07a4c6 Kobo: Unbreak Aura One support (#10758)
Regression since #10728, Fix #10757
2023-07-28 20:48:28 +02:00
NiLuJe
21949c5521 Kobo: Apply the AW99703 smooth ramp off fix to all affected devices
e.g., at least the Clara 2E features the same controller & driver,
but it is likely found on a few other models.
2023-07-24 04:22:13 +02:00
NiLuJe
f5e871d4ed NetworkInfo: Never show the token index
Now that I've seen it in action on a device, it's mostly useless, and,
if anything, confusing, because it's not static.
2023-07-24 04:22:13 +02:00