2
0
mirror of https://github.com/koreader/koreader synced 2024-11-13 19:11:25 +00:00
Commit Graph

127 Commits

Author SHA1 Message Date
Qingping Hou
42dde82c43 uimanager(minor): simplify suspend event handler's signature 2016-05-02 22:42:05 -07:00
Cosmin Gorgovan
19338cb439 Kobo: Offer to power off if the power button is held for at least 3 seconds 2016-05-01 14:09:21 +01:00
Cosmin Gorgovan
18c0cee18f UIManager: add method for broadcasting an event to all widgets 2016-05-01 13:48:21 +01:00
Qingping Hou
eb71d29716 kodev(minor): fix arg test 2016-04-23 21:22:57 -07:00
Qingping Hou
0166ff8add reader(fix): force draw info message before loading document
Since the doShowReader will run in nextTick, it will get picked up by
checkTask, which is in the beginning of next UI loop and blocks
UIManager from redrawing the screen for the info popup.
2016-04-23 21:17:38 -07:00
Qingping Hou
144fd170f1 uimanager(refactor): replace autosuspend if check with noop 2016-03-29 10:02:53 -07:00
Qingping Hou
e3137134f8 dbg(add): guard method to toggle assert at based at runtimemode 2016-03-28 23:38:25 -07:00
Zijie He
b86aa5a02b Implement auto-suspend function for Kobo. Add test case for UIManager:_checkTasks, which should not clear _task_queue_dirty bit before looping. 2016-03-28 17:53:18 -07:00
Qingping Hou
e52c74afcc test: more uimanager scheduler test 2016-03-07 22:52:52 -08:00
NiLuJe
a82fe3ac44 is_fl_on -> is_frontlight_on outside of powerd
Matches the reader setting we're reading/writing at that point,
and avoids confusion related to scoping because it doesn't necessarily
match powerd.is_fl_on at that point.

Well, at least I had to wrap my mind around it ^^
2016-03-02 19:15:11 +01:00
Qingping Hou
399d676cf0 kobo: rename frontlight_state config to is_frontlight_on 2016-03-02 18:25:17 +01:00
Qingping Hou
cf3b97537b kobo: build fl_state based on fl_intensity if model does not support toggle 2016-03-02 18:25:17 +01:00
zijiehe
e84093c414 Add a flState in Kobo, and KoboPowerD:toggleFrontlight uses flState to control the light instead of intensity. 2016-02-26 15:34:23 +08:00
Qingping Hou
b63ddb8736 fix: kill in fly hinting event on document close 2016-02-16 23:26:08 -08:00
Qingping Hou
1f082d7f5c build: fix travis build 2016-02-16 09:58:24 -08:00
Qingping Hou
e422842256 minor: a lot of luacheck fixes 2016-02-15 23:10:07 -08:00
Qingping Hou
1609becd61 Merge pull request #1772 from dset0x/frontlight-sync
WIP Synchronise frontlight level with nickel config
2016-02-01 21:15:00 -08:00
Qingping Hou
5a3b9c6856 style: make staick-check happier 2016-01-31 15:08:24 -08:00
Dimitrios Semitsoglou-Tsiapos
699781de68 nickel_conf: handle missing file/key/section 2016-01-12 16:22:37 +02:00
Dimitrios Semitsoglou-Tsiapos
eb47c5a39f Synchronise frontlight level with nickel config
* Drops support for mocking the frontlight setting internally which may
  cause incorrect in-memory values.

* Adds new supported value for `KOBO_LIGHT_ON_START` (-2), which sets
  'Kobo eReader.conf' as the source to update `settings.reader.lua`'s
  brightness setting on startup, thus using the value from it
  indirectly.

* Adds the `KOBO_SYNC_BRIGHTNESS_WITH_NICKEL` configuration variable
  which updates 'Kobo eReader.conf' every time the brightness setting is
  changed within koreader.

* Fixes missing call to save brightness when modifying via two-finger
  swipe.

Closes #1523.
2016-01-11 23:30:22 +02:00
Qingping Hou
6fe9f7870b chore: more luacheck fixes 2016-01-03 01:18:54 -08:00
Qingping Hou
b1a1aeca0a fix(task scheduler): many race conditions
_checkTasks first get number of tasks in the stack and does a numeric
for loop to go through each task. The problem is a task might call
schedule or unschedule, which will reorder tasks in the stack. This will
invalidate many of the table indexes used in the for loop.

This patch turns the task stack into an ordered queue, so _checkTasks
only pops one item out of the queue each time instead of setting up a
for loop at the beginning. This should avoid the race condition
mentioned above.
2015-12-26 12:59:48 -08:00
chrox
c7cac7b333 disable turbo lib by default 2015-06-02 13:07:17 +08:00
chrox
d468b05567 Use turbo looper on Android 2015-04-28 11:06:38 +08:00
chrox
8836225cec fix freeze when register for KOSync on Kindle 2015-03-21 13:19:00 +08:00
chrox
d3bb0d159a disable Turbo on Android to save precious mcode
This is a workaround to fix #1456.
2015-03-20 10:15:41 +08:00
chrox
9299b9a5e8 add async http client
it uses non-blocking turbo I/O looper to process http request
so that multiple http request can be handled simultaneously and http request
won't block user input, and most importantly, in Lua's way.
2015-03-02 17:21:26 +08:00
chrox
6a06cfaea5 refactor out flush settings when device goes into screensaver 2015-01-18 00:58:08 +08:00
chrox
8555f24c45 make sure refresh_count is incremented by only once at most for each repaint 2014-12-04 15:46:47 +08:00
Hans-Werner Hilse
844c1babf7 UIManager:_refresh(): no more default refresh
If no refresh type is specified, don't do a refresh.
There should be now refresh types specified in all relevant places.
2014-12-01 16:03:41 +00:00
Hans-Werner Hilse
9c4088a3ac small change of UIManager:show(): No more automatic refresh
This eliminates the API difference between the extra parameters of
UIManager:show() and setDirty(). They work the same now.
Note that this also eliminates the automatic refresh that took place
before when using show() without refresh options. It always refreshed
the full screen, which led to too big refresh regions all over the
place. Thus, refresh has now explicitly to be asked for, hopefully
encouraging to implement it in the widget that gets shown (and is
aware about the screen region it covers).

Also add an event that is triggered when a widget is closed:
CloseWidget. So a widget can implement "onCloseWidget()" to trigger
actions upon closing - most commonly, this is a refresh for the area
previously taken by the widget. That way, the widget's user does not
have to take measures to ensure that the area is refreshed later.
2014-12-01 14:42:38 +00:00
Hans-Werner Hilse
1091a8a3b9 add refresh control to UIManager:close() 2014-11-30 22:35:07 +00:00
Hans-Werner Hilse
afb59667c0 allow for more control on refreshes when show()ing widgets
for now, we have show() automatically call setDirty() for the new
widget, as before. However, now show() takes two arguments for
refresh configuration that will get passed on to setDirty().

For compatibility, the default is here in show() to do a partial
refresh. So if you want no refresh triggered (via this show() call),
add a function that doesn't return anything.
2014-11-30 22:33:36 +00:00
Hans-Werner Hilse
229c5ad61c change setDirty/refresh API
See documentation in the code.
In short: There is now one single method, setDirty(), that triggers
repaints and/or refreshes.
All variables in UIManager are gone - at least from an external
perspective. Everything is done through setDirty().
This also allows for easier debugging, since all requests come
in via function calls.
2014-11-30 00:15:17 +00:00
Hans-Werner Hilse
2f9386cd69 move refresh menu table out of UIManager
no need to clutter a core file of the whole UI concept with definitions
of UI elements
2014-11-30 00:15:17 +00:00
Frans de Jonge
66f04af8fb Various applications of util.template
This is the first bunch for #1276. I'd like to resolve #1281 before doing more.
2014-11-28 12:48:15 +01:00
Hans-Werner Hilse
21ded080dd fix refactor bug: invalidate update_regions_func 2014-11-23 12:13:33 +00:00
Hans-Werner Hilse
8696ca1fa1 fix old (pre-refactor) refresh call syntax 2014-11-23 12:13:33 +00:00
Hans-Werner Hilse
63af71188a refactor refresh
Lots of the device-related distinction wandered into
base/ffi/framebuffer_<driver>. This eases the refresh logic in
UI manager, which basically only decides what kind of refresh
to trigger. The device specific configuration in the framebuffer
driver decides how to realize that whish.

screen.lua is gone, in its place is now the framebuffer driver.
The device abstraction decides what framebuffer driver to load.
2014-11-23 12:13:32 +00:00
NiLuJe
9bd089812b Tweaks and fixes for refresh logic
Don't increase counter for regional updates
Also some workarounds for Kobos

Try to avoid update_regions_func poisoning

Reset it at the end of repaint() even if nothing was found dirty

Ensure regional updates are always PARTIAL, in
case we get a region attached to an automatically triggered refresh, not
marked force_partial [which, hey, shouldn't happen, but apparently does
sometimes ^^]
2014-11-18 10:31:32 +01:00
Hans-Werner Hilse
45cf927ee8 Fix double-check of task list
Since commit 12a76fee33, we had a potential
bug on the event mechanism:

It introduced (besides the checkTasks method itself) a second run of the
checkTasks() method. In the second run, however, scheduled events were
not taken into consideration in how long to wait for input events
afterwards.

So when the after the first run of checkTasks() there were new scheduled
tasks added to the task queue, they were not properly scheduled and
and depended on an already existing scheduled event or an input event
to trigger.

This might have led to unexpected order of execution (though the order
is not guaranteed by the task scheduling anyway!) or to events triggering
not at all until the next input event.
2014-11-14 09:12:46 +01:00
Hans-Werner Hilse
c22dbbe3ae factor out repaint to its own method
it's gotten complex enough to isolate it
2014-11-14 09:09:50 +01:00
NiLuJe
13cbed8ea5 Fix partial refreshes on older Kobo devices
Fix #1146 (regression).
2014-11-12 19:12:22 +01:00
NiLuJe
3d5dd44a4c Don't hijack "fast" UI refresh w/ the REAGL stuff 2014-11-12 15:03:59 +01:00
NiLuJe
859031222e Simplify the H2O special-casing
re #1119

AUTO appears to be doing the right thing...
(even if that baffles me, given the state of the Kernel sources,
unless they flip some switches at compile time
[NTX_WFM_MODE_OPTIMIZED_REAGL / NO_AUTO_REAGL_MODE] ...)

Anyway, that's what nickel does, so follow its lead ;).
2014-11-11 17:08:41 +01:00
NiLuJe
d018a31b0a Me speak english good. ya! 2014-11-11 03:58:57 +01:00
NiLuJe
dbe816062b Be consistent in how we refer to stuff 2014-11-11 03:39:47 +01:00
NiLuJe
041f11cba0 Tweak some comments 2014-11-11 02:42:07 +01:00
NiLuJe
a4a50b3d0d Fix the REAGL logic.
Never use REAGL to handle UI elements. It makes for a much smoother
experience.
2014-11-11 02:28:41 +01:00
NiLuJe
656a2c7cb6 Actually do what the comment says.
Don't hijack forced partial updates (i.e., from UI elements) on always
FULL REAGL devices. It doesn't implode if we don't, and it makes for a
snappier UI.
2014-11-11 02:15:08 +01:00