Daniel Eklöf
ba31a557f5
module/mpd: refresh thread calls bar->refresh() directly
...
This is possible, since content() now calculates the correct 'elapsed'
time, based on the time the original elapsed value was received from
MPD.
2018-12-28 14:07:06 +01:00
Daniel Eklöf
f74f2ad031
module/mpd: elapsed and duration are now tracked in millseconds
2018-12-28 14:06:13 +01:00
Daniel Eklöf
3027b6cd9e
particle/progress-bar: add debug log
2018-12-28 14:05:17 +01:00
Daniel Eklöf
b0f0a1e942
tag: add realtime unit MSECS (milliseconds)
2018-12-28 14:05:02 +01:00
Daniel Eklöf
13cc11e200
tag: refresh_in() *must* use the realtime unit
2018-12-28 14:04:35 +01:00
Daniel Eklöf
67bd38f5df
module/mpd: implement refresh_in()
2018-12-28 12:47:18 +01:00
Daniel Eklöf
89ebfa0dbb
module/mpd: remember *when* the 'elapsed' member was set.
...
This allows us to update the elapsed field without having to talk to
MPD.
In particular, it fixes a bug where we reported the same elapsed value
when we we're updated due to *other* modules calling bar->refresh().
2018-12-28 12:47:14 +01:00
Daniel Eklöf
adb70e9f35
particle/progress-bar: force-refresh realtime tags
...
When we're tracking a realtime tag, calculate the time left until the
next segment in the progress bar will get filled, and schedule a force
refresh.
2018-12-28 12:43:54 +01:00
Daniel Eklöf
20b3299afd
tag: add a refresh_in() interface function
...
E.g. particles may use this to force a refresh after a certain amount
of time.
Note that it can only be used with 'realtime' tags.
2018-12-28 12:43:02 +01:00
Daniel Eklöf
5008008079
module: add a refresh_in() interface function
...
Modules can implement this to allow e.g. particles to force a refresh
after a certain amount of time.
2018-12-28 12:42:08 +01:00
Daniel Eklöf
1ed0dab6ad
config: raise default battery poll interval from 30s to 60s
2018-12-28 12:41:38 +01:00
Daniel Eklöf
c2e53a6bf7
main: no need for EFD_NONBLOCK
2018-12-28 12:41:21 +01:00
Daniel Eklöf
35d7b2bc4a
bar: add EFD_CLOEXEC flag to 'ready' eventfd
2018-12-28 12:41:05 +01:00
Daniel Eklöf
904f9ff8e1
tag: all tag constructors must now be passed a module 'owner'
2018-12-28 12:40:41 +01:00
Daniel Eklöf
8d94202057
particle/progress-bar: renders a progrss-bar-like thingy
2018-12-27 14:22:05 +01:00
Daniel Eklöf
ce895ac44f
particle/empty: placeholder particle, renders nothing
...
But may have margins.
2018-12-27 14:21:33 +01:00
Daniel Eklöf
99008c5ad9
module/mpd: "elapsed" tag is now a realtime tag (when state == playing)
2018-12-27 11:44:46 +01:00
Daniel Eklöf
025c6991a3
tag: add a new variant of int tags, with a realtime unit property
...
The idea is, consumers of a tag, can check the realtime property, and
if set to something other than TAG_REALTIME_NONE, schedule a realtime
update.
For example, it could be used to track song progress.
2018-12-27 11:43:27 +01:00
Daniel Eklöf
9a94c9c1f7
module/mpd: monitors MPD
2018-12-27 11:36:38 +01:00
Daniel Eklöf
3aa6b21056
particle/string: call particle_default_destroy()
2018-12-26 21:35:39 +01:00
Daniel Eklöf
ce85ccda56
particle/ramp: call particle_default_destroy()
2018-12-26 21:35:24 +01:00
Daniel Eklöf
20fb0c37b5
particle/map: call particle_default_destroy()
2018-12-26 21:35:05 +01:00
Daniel Eklöf
f5123afc72
particle/list: call particle_default_destroy()
2018-12-26 21:34:53 +01:00
Daniel Eklöf
1427d6a98b
particle: provide a default destroy() function
...
This allows us to destroy the associated decoration.
2018-12-26 21:34:19 +01:00
Daniel Eklöf
f65a18b655
particle: initialize 'deco' member to NULL
...
Fixes valgrind warnings about uninitialized variable. This happened
for every particle that did *not* have a decoration.
2018-12-26 21:33:35 +01:00
Daniel Eklöf
1b50808da5
bar: set_cursor(): new interface function, to set the X cursor
...
Use this to explicitly set the initial/default cursor to "left_ptr"
2018-12-26 17:16:54 +01:00
Daniel Eklöf
ce68bdb59d
exposable: add a 'width' member, set (at latest) in begin_expose()
2018-12-26 16:37:11 +01:00
Daniel Eklöf
a745436ee2
decoration: stack: stacks multiple decorations on top of each other
2018-12-26 15:59:48 +01:00
Daniel Eklöf
09cd27b688
decoration/underline: draws a line at the bottom of the particle
2018-12-26 15:59:16 +01:00
Daniel Eklöf
1c9a908a8f
particle/string: draw decoration, if available
2018-12-26 15:31:49 +01:00
Daniel Eklöf
0e3dd72313
yml: bump anchor vector size
2018-12-26 15:31:37 +01:00
Daniel Eklöf
0094cc1269
config: load decorations. All particles may have one
2018-12-26 15:31:16 +01:00
Daniel Eklöf
0284f5ac85
decoration: configurable graphical effects, added to a particle
2018-12-26 15:30:47 +01:00
Daniel Eklöf
052513c736
particle/ramp: don't use floating point arithmetic
2018-12-26 12:44:26 +01:00
Daniel Eklöf
1929099ca4
module/backlight: new module
2018-12-26 12:44:17 +01:00
Daniel Eklöf
5306ebd4ed
bar: call refresh() after all modules have been loaded
...
This also means that modules do *not* have to call bar->refresh() just
before/after calling module_signal_ready().
As long as the module's initial state has been correctly/completely
set up before it calls module_signal_ready(), the module *only* has to
call bar->refresh() when it's state changes.
2018-12-26 11:48:09 +01:00
Daniel Eklöf
3af0280304
module/xwindow: replace assert with real error check
2018-12-26 11:44:21 +01:00
Daniel Eklöf
6d75fe64ef
module/xkb: signal module-ready when failing early
2018-12-26 11:42:42 +01:00
Daniel Eklöf
b2121070f8
module/i3: replace asserts with real error checks
2018-12-26 11:31:28 +01:00
Daniel Eklöf
30332670aa
module/battery: convert asserts to real error checks
2018-12-25 12:25:24 +01:00
Daniel Eklöf
d81547066d
module/battery: log error message on failure during initialization
2018-12-19 21:12:42 +01:00
Daniel Eklöf
3bc4bd56a9
tag: tag_new_string(): allow NULL values (treat as empty string)
2018-12-19 21:01:36 +01:00
Daniel Eklöf
7f2c0681a7
log: add LOG_ERRNO()
...
Works like LOG_ERR(), but appends a string representation of the
current errno value to the log message string.
2018-12-19 21:01:01 +01:00
Daniel Eklöf
8897e480c5
log: rename log_class() -> log_msg()
2018-12-19 20:56:26 +01:00
Daniel Eklöf
7e95862e12
module/battery: error handling during initialization
2018-12-19 20:54:36 +01:00
Daniel Eklöf
ffaec546f5
module/xwindow: use lock from generic module
2018-12-19 20:35:43 +01:00
Daniel Eklöf
60b72cc55a
module/xkb: delay ready signal, until we've actually initialized
2018-12-19 20:29:58 +01:00
Daniel Eklöf
661cabfb69
module/i3: use lock provided by generic module
2018-12-19 20:26:15 +01:00
Daniel Eklöf
2c7362fefa
module/battery: no need to lock before we've signaled ready
2018-12-19 20:24:36 +01:00
Daniel Eklöf
3413232ed6
module: add new function module_signal_ready()
2018-12-19 20:23:53 +01:00