Max Kellermann
667edcd9d0
util/IterableSplitString: cheaper variant of SplitString()
2016-03-18 14:11:50 +01:00
Max Kellermann
b4e75bedf0
util/StringView: make nullptr_t constructor "constexpr"
2016-03-18 14:11:50 +01:00
Max Kellermann
5482ef5451
util/SplitString: relicense to BSD-2
2016-03-18 13:18:31 +01:00
Max Kellermann
f254831aa6
Instance: remove redundant "virtual" keywords
2016-03-10 23:16:35 +01:00
Max Kellermann
bd40c8649c
Partition: use Instance::EmitIdle()
2016-03-10 23:12:03 +01:00
Max Kellermann
7c53df2ed1
Partition: eliminate GlobalEvents.hxx, add mask constants
2016-03-10 23:10:14 +01:00
Max Kellermann
5ca6026787
Partition: use CallbackMaskMonitor, replacing class GlobalEvents::Monitor
2016-03-10 22:52:16 +01:00
Max Kellermann
483daa5882
Instance: move GlobalEvents::Monitor to Partition
...
All remaining events are specific to the Partition.
2016-03-10 22:47:47 +01:00
Max Kellermann
e2bc92d128
Instance: replace IdleMaskMonitor with CallMaskMonitor
2016-03-10 22:38:10 +01:00
Max Kellermann
5ffe3773d4
event/MaskMonitor: add variant with bound method
2016-03-10 22:37:33 +01:00
Max Kellermann
a7c68018a2
util/Callback: new utility class for callback functions
2016-03-10 20:42:19 +01:00
Max Kellermann
5ffb82993e
IdleMonitor: new class to replace GlobalEvents::IDLE
...
Use MaskMonitor to eliminate duplicate code.
2016-03-10 20:32:43 +01:00
Max Kellermann
07add0bd91
Instance: add base class which owns the EventLoop
2016-03-10 20:32:35 +01:00
Max Kellermann
9a9b6fa326
queue/Playlist: add interface QueueListener, replacing calls to idle_add()
2016-03-10 20:10:14 +01:00
Max Kellermann
ba43ec5759
queue/Playlist: remove redundant "struct" keyword
2016-03-10 20:03:45 +01:00
Max Kellermann
008a9560fe
queue/Playlist: call OnModified(), eliminate duplicate code
2016-03-10 20:03:01 +01:00
Max Kellermann
6ff01cc72c
Merge branch 'v0.19.x'
2016-03-07 14:30:43 +01:00
Max Kellermann
e140a28073
archive/iso9660: check path buffer bounds
2016-03-07 14:21:01 +01:00
Max Kellermann
de61c3b962
archive/iso9660: use a single path buffer for Visit()
...
Avoid wasting 4 kB stack per directory level.
2016-03-07 14:01:52 +01:00
Max Kellermann
c46fc4531b
archive/iso9660: move the "." and ".." checks up
2016-03-07 14:01:40 +01:00
Max Kellermann
065a9ed10f
archive/iso9660: add local variable "filename"
2016-03-07 13:57:07 +01:00
Max Kellermann
e44c0254f7
archive/iso9660: make variables more local
2016-03-07 13:15:07 +01:00
Max Kellermann
13f9f0315f
util/HugeAllocator: fix division by zero due to inverted check
...
There were two ways this could fail:
1. division by zero when sysconf(_SC_PAGESIZE)==0
2. mmap() failure because the size parameter is not aligned to page
size
Neither ever happened: sysconf() never fails, and the only caller
passes a size that is already aligned. Phew.
2016-03-06 23:53:41 +01:00
Max Kellermann
1532ffe215
protocol/ArgParser: fix range check
...
The old check
unsigned(value) > std::numeric_limits<unsigned>::max()
.. cannot ever fail.
2016-03-06 23:41:08 +01:00
Max Kellermann
b24cbc68ba
decoder/dsdiff: fix off-by-one buffer overflow
2016-03-06 23:28:29 +01:00
Max Kellermann
976fdd76c1
decoder/opus: limit tag size to 64 kB
2016-03-06 23:26:48 +01:00
Max Kellermann
bbda335e02
mixer/pulse: fix integer division rounding
2016-03-06 23:23:30 +01:00
Max Kellermann
031410c72b
Instance: add StateFile* attribute
2016-03-05 21:00:38 +01:00
Max Kellermann
710def8e38
Partition: un-inline the constructor
2016-03-05 20:51:29 +01:00
Max Kellermann
c0bda1b103
Idle: move flags to IdleFlags.hxx
2016-03-05 20:48:37 +01:00
Max Kellermann
0e87ce4680
GlobalEvents: expose the internal class
...
Move the GlobalEvents::Monitor instance into class Instance.
Eliminate all global variables.
2016-03-05 20:23:30 +01:00
Max Kellermann
b4d594eeff
Instance: embed EventLoop, no pointer
2016-03-05 20:20:12 +01:00
Max Kellermann
ce09379bae
Main: use Instance::Shutdown()
2016-03-05 20:20:12 +01:00
Max Kellermann
b27fb64317
client/ClientRead: use Instance::Shutdown()
2016-03-05 20:19:20 +01:00
Max Kellermann
099455db25
db/update/Service: convert const to constexpr
2016-03-05 20:08:01 +01:00
Max Kellermann
3146bf51e6
db/update/Service: eliminate attribute "progress"
...
Use walk!=nullptr instead.
2016-03-05 19:40:11 +01:00
Max Kellermann
b24a5e0662
Partition: add method EmitIdle()
...
Prepare for moving idle events to class Partition. Right now, it's
just a wrapper for idle_add().
2016-03-05 19:16:39 +01:00
Max Kellermann
e52ac0b187
event/MaskMonitor: new class to replace code in GlobalEvents and Idle
2016-03-05 19:15:50 +01:00
Max Kellermann
eaa1590866
GlobalEvents: eliminate SHUTDOWN, use Instance::Shutdown() instead
2016-03-05 18:56:27 +01:00
Max Kellermann
071af004bd
GlobalEvents: include cleanup
2016-03-05 18:56:27 +01:00
Max Kellermann
23ab4e5e5f
Instance: add method Shutdown()
2016-03-05 18:56:16 +01:00
Max Kellermann
8e563cbccd
Instance: use C++11 initializers
2016-03-05 18:55:57 +01:00
Max Kellermann
1aee89f5ea
*: include cleanup (using iwyu)
2016-03-01 22:08:13 +01:00
Max Kellermann
d2dd6f7c70
thread/Posix{Mutex,Cond}: use "constexpr" only with glibc
...
Apparently all other C libraries are not compatible with "constexpr".
Those which are not will get a performance penalty, but at least they
work at all.
2016-03-01 21:23:59 +01:00
Max Kellermann
fb547260d1
player/Control: Play*() returns Error information
2016-02-28 13:31:41 +01:00
Max Kellermann
2065e32904
queue/PlaylistControl: clear "queued" before calling LockSeek()
...
This is necessary to avoid an assertion failure in UpdateQueuedSong()
after LockSeek() has failed.
2016-02-28 13:19:44 +01:00
Max Kellermann
ac15581c56
command/error: remove unused function print_playlist_result()
2016-02-28 11:53:38 +01:00
Max Kellermann
9e2e882157
PlaylistPrint: throw PlaylistError on error
2016-02-28 11:52:39 +01:00
Max Kellermann
99ded56047
command/error: remove db_domain from ToAck(Error)
2016-02-28 11:48:12 +01:00
Max Kellermann
65386f52f0
db/proxy: throw DatabaseError on error
2016-02-28 11:47:03 +01:00