Max Kellermann
|
224400074c
|
player/CrossFade: use std::chrono::duration
|
2018-09-22 19:37:02 +02:00 |
|
Max Kellermann
|
863722545f
|
player/CrossFade, ...: use lround()
|
2018-09-22 19:08:03 +02:00 |
|
Max Kellermann
|
d3d1d37782
|
AudioFormat: add TimeToSize(), SizeToTime()
|
2018-09-21 20:51:08 +02:00 |
|
Max Kellermann
|
1a2012a97e
|
player/Control: convert total_play_time to FloatDuration
|
2018-09-21 20:50:15 +02:00 |
|
Max Kellermann
|
90f4e97751
|
decoder/Client: use std::chrono::duration<double> instead of raw double
|
2018-09-21 20:42:34 +02:00 |
|
Max Kellermann
|
d1bcd98f79
|
Chrono: add FloatDuration
|
2018-09-21 20:42:30 +02:00 |
|
Max Kellermann
|
39542de69d
|
Chrono: add static method Cast()
|
2018-09-21 20:41:23 +02:00 |
|
Max Kellermann
|
1d00d55d53
|
player/Thread: stop buffering if buffer is full
Shouldn't ever happen, but who knows...
|
2018-09-21 19:05:25 +02:00 |
|
Max Kellermann
|
a190db0873
|
player/Thread: simplify loop condition
|
2018-09-21 18:58:38 +02:00 |
|
Max Kellermann
|
e3142312bb
|
player/Control: convert to class
|
2018-09-21 18:12:28 +02:00 |
|
Max Kellermann
|
e5d1ac0bd0
|
player/Thread: move functions into PlayerControl
|
2018-09-21 18:09:14 +02:00 |
|
Max Kellermann
|
c0411fa412
|
decoder/Thread: add noexcept
|
2018-09-21 17:58:34 +02:00 |
|
Max Kellermann
|
781e690012
|
player/Thread: catch and log initialization errors
|
2018-09-21 17:35:32 +02:00 |
|
Max Kellermann
|
9a2d71341e
|
player/Control: apply CamelCase to struct player_status
|
2018-09-21 17:22:35 +02:00 |
|
Max Kellermann
|
6db6d3c50c
|
player/Thread: move StartPlayerThread() into PlayerControl
|
2018-09-21 17:14:19 +02:00 |
|
Max Kellermann
|
0e2c597884
|
MusicBuffer: remove noexcept from constructor
The `SliceBuffer` constructor can throw.
|
2018-09-21 17:11:52 +02:00 |
|
Max Kellermann
|
debdf9bb96
|
decoder/{Thread,Control,...}: rename source files, drop prefix
|
2018-09-21 17:01:24 +02:00 |
|
Max Kellermann
|
218d9383d7
|
decoder/Thread: move decoder_thread_start() into DecoderControl
|
2018-09-21 16:57:54 +02:00 |
|
Max Kellermann
|
af64bd5088
|
Thread/Thread: disallow copying
|
2018-09-21 16:55:09 +02:00 |
|
Max Kellermann
|
050f81c4fe
|
Thread/Thread: document Start() exception
|
2018-09-21 16:53:52 +02:00 |
|
Max Kellermann
|
ab678787f4
|
java/Ref: API doc line breaks
|
2018-09-06 20:04:46 +02:00 |
|
Max Kellermann
|
23556585ca
|
java/Ref: add LocalRef::GetEnv()
|
2018-09-06 20:04:40 +02:00 |
|
Max Kellermann
|
728e4e9a38
|
util/StringCompare: add StringEndsWithIgnoreCase(), StringStartsWithIgnoreCase()
|
2018-09-06 19:52:43 +02:00 |
|
Max Kellermann
|
2d6f9f9a9c
|
Util/WStringAPI: non-Windows implementation of _wcs*cmp()
|
2018-09-06 19:49:45 +02:00 |
|
Max Kellermann
|
c2e2e5543e
|
util/WStringAPI: add wcscoll() wrapper
|
2018-09-06 19:39:28 +02:00 |
|
Max Kellermann
|
349d8eb248
|
util/WStringCompare: add "noexcept"
|
2018-09-06 19:35:09 +02:00 |
|
Max Kellermann
|
94b96bde9b
|
util/WStringCompare: wcpcpy() and wcsdup() are available on Android
|
2018-09-06 19:33:50 +02:00 |
|
Max Kellermann
|
45ffc864c5
|
util/StringCompare: add more function attributes
|
2018-09-06 19:23:13 +02:00 |
|
Max Kellermann
|
19d9ce260a
|
fs/io/FileOutputStream: disallow copying
|
2018-09-03 14:36:01 +02:00 |
|
Max Kellermann
|
0701333ec1
|
db/proxy: forward filter as expression to server
This adds support for the full set of MPD 0.21 filter types.
|
2018-09-02 22:39:45 +02:00 |
|
Max Kellermann
|
a8e70f0901
|
db/proxy: forward sort and window to server
|
2018-09-02 17:51:30 +02:00 |
|
Max Kellermann
|
c7c32a3ce9
|
db/Print: move sort/window emulation code to class DatabaseVisitorHelper
That way, each plugin can decide to implement it better.
|
2018-09-02 17:37:02 +02:00 |
|
Max Kellermann
|
94694e0f33
|
db/simple: pass DatabaseSelection to WalkMount()
This passes the new `sort` and `window` attributes to the mounted
database.
|
2018-09-02 17:13:35 +02:00 |
|
Max Kellermann
|
a73176a1e9
|
db/Helpers: fix include guard
|
2018-09-02 12:32:33 +02:00 |
|
Max Kellermann
|
e6a974a93e
|
db/Selection: add sort and window
Remove them as parameters from `db_selection_print()`.
|
2018-09-02 11:10:04 +02:00 |
|
Max Kellermann
|
9894967fcb
|
db/Selection: move bool attribute to the end
May allow a better memory layout.
|
2018-09-02 11:10:04 +02:00 |
|
Max Kellermann
|
92da483ecd
|
db/Selection: add noexcept
|
2018-09-02 11:10:04 +02:00 |
|
Max Kellermann
|
9cc960ac5e
|
db/proxy: require MPD 0.19
|
2018-09-02 11:07:32 +02:00 |
|
Max Kellermann
|
18dd082f1e
|
db/proxy: use ~0 instead of -1
No undefined behavior.
|
2018-09-02 11:06:08 +02:00 |
|
Max Kellermann
|
81b734be10
|
db/Interface: add "noexcept"
|
2018-09-02 10:20:48 +02:00 |
|
Max Kellermann
|
c59be7ced3
|
db/Interface: add more documentation about exceptions
|
2018-09-02 10:19:10 +02:00 |
|
Max Kellermann
|
c5c4d4a57e
|
db/proxy: forward the audio format
Requires libmpdclient 2.15.
|
2018-09-02 08:38:23 +02:00 |
|
Max Kellermann
|
2d0b429b6a
|
db/proxy: require libmpdclient 2.9
|
2018-09-02 08:21:11 +02:00 |
|
Max Kellermann
|
60620d9af5
|
db/Print: move variable i
|
2018-09-02 08:17:22 +02:00 |
|
Max Kellermann
|
15b2a4862e
|
protocol/RangeArg: add Contains()
|
2018-09-02 08:17:22 +02:00 |
|
Max Kellermann
|
2915d2dd0f
|
protocol/RangeArg: add IsAll()
|
2018-09-02 08:17:22 +02:00 |
|
Max Kellermann
|
590687fdea
|
protocol/RangeArg: eliminate SetAll()
|
2018-09-02 08:17:22 +02:00 |
|
Max Kellermann
|
993f8d6a5e
|
db/Print: pass RangeArg to db_selection_print()
|
2018-09-02 08:17:22 +02:00 |
|
Max Kellermann
|
68f824a186
|
protocol/ArgParser: move struct RangeArg to separate header
|
2018-09-02 08:17:22 +02:00 |
|
Max Kellermann
|
b9cca49e14
|
lib/dbus/ReadIter: switch off -Wshadow on GCC<8
GCC 6.3.0 emits bogus warnings like this:
In file included from src/lib/dbus/UDisks2.cxx:22:0:
src/lib/dbus/ReadIter.hxx: In instantiation of 'ODBus::ReadMessageIter::ForEachProperty(F&&)::<lambda(auto:2&&)> [with auto:2 = ODBus::ReadMessageIter; F = std::_Bind<void (*(std::reference_wrapper<UDisks2::Object>, std::_Placeholder<1>, std::_Placeholder<2>))(UDisks2::Object&, const char*, ODBus::ReadMessageIter&&) noexcept>]':
src/lib/dbus/ReadIter.hxx:102:6: required from 'ODBus::ReadMessageIter::ForEachRecurse(int, F&&)::<lambda(auto:1&&)> [with auto:1 = ODBus::ReadMessageIter&; F = ODBus::ReadMessageIter::ForEachProperty(F&&) [with F = std::_Bind<void (*(std::reference_wrapper<UDisks2::Object>, std::_Placeholder<1>, std::_Placeholder<2>))(UDisks2::Object&, const char*, ODBus::ReadMessageIter&&) noexcept>]::<lambda(auto:2&&)>]'
src/lib/dbus/ReadIter.hxx:92:5: required from 'void ODBus::ReadMessageIter::ForEach(int, F&&) [with F = ODBus::ReadMessageIter::ForEachRecurse(int, F&&) [with F = ODBus::ReadMessageIter::ForEachProperty(F&&) [with F = std::_Bind<void (*(std::reference_wrapper<UDisks2::Object>, std::_Placeholder<1>, std::_Placeholder<2>))(UDisks2::Object&, const char*, ODBus::ReadMessageIter&&) noexcept>]::<lambda(auto:2&&)>]::<lambda(auto:1&&)>]'
src/lib/dbus/ReadIter.hxx:101:3: required from 'void ODBus::ReadMessageIter::ForEachRecurse(int, F&&) [with F = ODBus::ReadMessageIter::ForEachProperty(F&&) [with F = std::_Bind<void (*(std::reference_wrapper<UDisks2::Object>, std::_Placeholder<1>, std::_Placeholder<2>))(UDisks2::Object&, const char*, ODBus::ReadMessageIter&&) noexcept>]::<lambda(auto:2&&)>]'
src/lib/dbus/ReadIter.hxx:114:3: required from 'void ODBus::ReadMessageIter::ForEachProperty(F&&) [with F = std::_Bind<void (*(std::reference_wrapper<UDisks2::Object>, std::_Placeholder<1>, std::_Placeholder<2>))(UDisks2::Object&, const char*, ODBus::ReadMessageIter&&) noexcept>]'
src/lib/dbus/UDisks2.cxx:71:30: required from here
src/lib/dbus/ReadIter.hxx:114:53: error: declaration of 'ODBus::ReadMessageIter&& i' shadows a parameter [-Werror=shadow]
ForEachRecurse(DBUS_TYPE_DICT_ENTRY, [&f](auto &&i){
^
src/lib/dbus/ReadIter.hxx:101:33: note: shadowed declaration is here
ForEach(arg_type, [&f](auto &&i){
^
|
2018-09-02 08:17:21 +02:00 |
|