Max Kellermann
4a7042e847
decoder/flac: handle unknown duration correctly
...
If the duration is unknown, pass SignedSongTime::Negative(), as
documented for decoder_initialized().
2016-07-08 22:33:49 +02:00
Max Kellermann
7f36923eb4
decoder/flac: pass SignedSongTime to decoder_initialized()
2016-07-08 22:32:23 +02:00
Max Kellermann
2ca8d69126
decoder/flac: document flac_data::position
2016-07-08 22:20:16 +02:00
Max Kellermann
70367d70c8
decoder/flac: remove obsolete sub-song support
...
This is obsolete because it has been moved to the MPD core.
2016-07-08 21:59:30 +02:00
Jacob Vosmaer
e068d62ac6
output/osx rewrite render callback
2016-07-08 15:36:42 +02:00
Max Kellermann
e6389ff5a1
client/ClientRead: call Break() before Close()
...
Referencing the attribute "partition" is illegal after Close(),
because Close() deletes "this".
2016-07-07 13:54:04 +02:00
Max Kellermann
b46cf57d98
event/BufferedSocket: OnSocketReady() returns true after close
...
Fixes use-after-free bug (https://bugs.musicpd.org/view.php?id=4548 ).
2016-07-07 13:52:20 +02:00
Max Kellermann
6f59d71e07
decoder/API: check initial_seek_running in _check_cancel_read()
...
The "seeking" flag is not set for the initial seek, and so
decoder_read() could be canceled when another SEEK was emitted during
initial seek.
This fixes several seek problems, for example the one reported for the
FLAC decoder plugin:
https://bugs.musicpd.org/view.php?id=4552
2016-07-06 15:46:04 +02:00
Max Kellermann
f9130f42a2
decoder/flac: try to recover from seek error()
...
libFLAC API documentation suggests that FLAC__stream_decoder_flush()
should be called to recover from FLAC__STREAM_DECODER_SEEK_ERROR.
2016-07-05 19:29:56 +02:00
Max Kellermann
faf2eeaa99
decoder/flac: evaluate all possible FLAC__stream_decoder_get_state() values
...
Stop after all fatal errors. This fixes assertion failures in
libFLAC.
2016-07-05 19:27:40 +02:00
Max Kellermann
1c7de0b4ac
output/shout: remove pointless memset() call
2016-07-05 18:02:35 +02:00
Max Kellermann
58487e484f
filter/route: use PcmSilence()
2016-07-05 18:01:29 +02:00
Max Kellermann
104075f3e0
PlayerThread: use PcmSilence() in SendSilence()
...
No change for regular PCM, but DSD uses 0x69 now.
2016-07-05 18:01:29 +02:00
Max Kellermann
b8097eaf2e
pcm/Volume: move silence pattern to Silence.cxx
2016-07-05 17:52:53 +02:00
Max Kellermann
5eb0cbc887
PlayerThread: make chunk allocation error non-fatal in SendSilence()
...
Fixes abort after seeking on fast machines.
2016-07-05 17:44:45 +02:00
Max Kellermann
1a4a6f3807
filter/Observer: fix memory leak
2016-07-04 15:25:21 +02:00
Max Kellermann
a012b25335
filter/convert: fix no-op check
...
Commit 3a212412
changed the meaning of out_audio_format, but I forgot
to apply this to ConvertFilter::FilterPCM().
See https://bugs.musicpd.org/view.php?id=4551
2016-07-04 15:17:03 +02:00
Jacob Vosmaer
2fdbae3e1f
Remove braces
2016-07-03 16:45:23 +02:00
Jacob Vosmaer
87e06793c2
Get rid of GetMacOSStatusCommentString
2016-07-03 14:06:53 +02:00
Jacob Vosmaer
8cc451a2e2
Use error.Set instead of error.Format
2016-07-03 13:36:35 +02:00
Jacob Vosmaer
723c2c7fa9
Remove some debugging code
2016-07-03 13:18:44 +02:00
Jacob Vosmaer
4dd2c5cdd5
Convert device name from CFStringRef to char*
2016-07-03 12:59:19 +02:00
Jacob Vosmaer
bdc257b40e
Add debug statements
2016-07-02 23:44:21 +02:00
Jacob Vosmaer
4728f7c697
Use AudioComponent instead of Carbon Component
2016-07-02 23:35:44 +02:00
Max Kellermann
07228ff56a
tag/Id3Load: use offset_type instead of off_t
2016-07-02 14:00:52 +02:00
Max Kellermann
a61f153df7
system/Error: add missing include
2016-07-02 13:59:47 +02:00
Max Kellermann
34e91850d9
decoder/pcm: assume that audio/L16 is big-endian
...
See https://bugs.musicpd.org/view.php?id=4547
2016-07-01 21:34:56 +02:00
Max Kellermann
ba8e579e9b
pcm/Volume: use 0x69 to generate DSD silence
2016-07-01 21:22:21 +02:00
Max Kellermann
072e39c9cf
filter/ReplayGain: skip PcmVolume if a mixer is set
...
Previously, volume was applied twice: once by PcmVolume, and again by
the hardware mixer.
2016-07-01 21:17:52 +02:00
Max Kellermann
3a21241248
filter/FilterInternal: split class Filter, add class PreparedFilter
...
For easier state management inside filter plugins.
2016-07-01 21:04:24 +02:00
Max Kellermann
5c75096bcd
pcm/Volume: remove assert() from destructor
...
While this assert() was useful when we had to track the object's state
manually, there was no practical purpose other than verifying old
code, and it complicates our new C++ code.
2016-07-01 21:04:24 +02:00
Max Kellermann
a43b0f5253
mixer/software: move Filter management to the AudioOutput
2016-07-01 18:23:53 +02:00
Max Kellermann
d93271e86d
mixer/software: use C++11 initializers
2016-07-01 14:06:08 +02:00
Dimitris Papastamos
4a6df9f961
output/sndio: Remove unused attribute
...
The variable is actually used in this function.
2016-06-24 09:11:36 +02:00
Dimitris Papastamos
a43ae2369b
output/sndio: Add 24-bit 4-byte packed audio format support
2016-06-24 09:11:30 +02:00
Dimitris Papastamos
9a049de859
output/sndio: No need to use a loop in Play()
...
This is a left-over from the previous version of the code
that was retrying on EINTR.
2016-06-24 09:10:57 +02:00
Dimitris Papastamos
58b8398aa0
output/sndio: Use size_t instead of ssize_t
...
Some minor style fixes as well.
2016-06-23 11:11:42 +02:00
Max Kellermann
645751f680
output/Init: use C++11 initializers
2016-06-22 18:44:00 +02:00
Dimitris Papastamos
26c0924461
sndio: Eliminate remaining goto usage to conform to MPD style
2016-06-22 16:10:46 +02:00
Dimitris Papastamos
d4f801a8e9
sndio: Fix segmentation fault when audio card is removed
...
This can happen if you remove an external audio card or if you stop
sndiod(8) while playing a song.
sio_write() will retry internally if it fails with errno == EINTR
so no need to handle that.
2016-06-22 16:10:38 +02:00
Dimitris Papastamos
8406864963
sndio: Allow tweaking application buffer size
...
It defaults to 250 ms.
2016-06-22 16:09:57 +02:00
Max Kellermann
85ef034fd0
filter/ReplayGain: use C++11 initializers
2016-06-22 12:43:47 +02:00
Max Kellermann
59141f62bb
filter/route: use std::array
2016-06-22 12:24:55 +02:00
Dimitris Papastamos
d68cadba7b
sndio: No need to use a timer so get rid of it
2016-06-22 11:28:58 +02:00
Max Kellermann
1207fd1f16
output/sndio: remove unnecessary initialization
2016-06-22 11:01:37 +02:00
Dimitris Papastamos
8aa61e230c
sndio: Add option to select output device
2016-06-22 11:00:06 +02:00
Max Kellermann
2c7bda8a3b
output/sndio: define SIO_DEVANY if it is undefined
...
Fixes build failure on Debian Wheezy.
2016-06-22 10:58:44 +02:00
Dimitris Papastamos
d58c5dd398
sndio: Implement sndio_test_default_device()
2016-06-22 10:54:59 +02:00
Dimitris Papastamos
171da7a347
Add sndio output plugin
2016-06-22 08:44:47 +02:00
Max Kellermann
3fd70a769a
event/SignalMonitor: remove unused function SignalMonitorGetEventLoop
2016-06-20 10:48:34 +02:00
Max Kellermann
4280f84535
event/SignalMonitor: use BoundMethod instead of raw function pointer
2016-06-20 10:46:36 +02:00
Max Kellermann
c3d9c32615
util/BindMethod: add nullptr constructor and bool operator
2016-06-20 10:36:37 +02:00
Max Kellermann
a938b609b9
util/BindMethod: document the default constructor
2016-06-20 10:36:09 +02:00
Max Kellermann
d3c7fac606
thread/Thread: throw std::system_error on error
2016-06-17 19:11:20 +02:00
Max Kellermann
fea3f6cc72
thread/Thread: use C++11 initialisers
2016-06-17 19:11:19 +02:00
Max Kellermann
aee5966e1c
input/thread: use C++11 initialisers
2016-06-17 19:10:39 +02:00
Max Kellermann
95e53ac0a0
input/alsa: rebase on AsyncInputStream
...
Use the snd_pcm_t only in the IOThread, and reuse code that is
well-known to work.
2016-06-17 18:36:54 +02:00
Max Kellermann
5d11759f7d
input/async: use class DeferredCall
2016-06-17 18:31:58 +02:00
Max Kellermann
829616534e
event/DeferredCall: new class supposed to replace DeferredMonitor
...
Comes with a callback pointer instead of a virtual method, which
allows multiple instances in one class.
2016-06-17 18:26:29 +02:00
Max Kellermann
863f4d8366
util/BindMethod: new utility class for callbacks
...
Replaces the old BoundMethod template.
2016-06-17 18:20:19 +02:00
Max Kellermann
bdd0c3686d
input/async: use class HugeAllocation
2016-06-17 18:06:02 +02:00
Max Kellermann
91769d536d
util/HugeAllocator: add class HugeAllocation
2016-06-17 18:01:13 +02:00
Max Kellermann
9500343d85
util/HugeAllocator: add "noexcept"
2016-06-17 17:59:45 +02:00
Max Kellermann
ef053035d0
util/HugeAllocator: throw std::bad_alloc on error
2016-06-17 17:57:40 +02:00
Max Kellermann
8b903626c2
release v0.19.16
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAABCAAGBQJXXuZbAAoJECNuiljG20USSegP/1gYoDyp4vDDCcRBNZkr3hlE
VbFyEz06/chfUTCRWFxtM6ghVMzSpqv7I8wDA8zv22NTkForVWD3gjimtJqJ/R4w
aT7QMZJmJUIH0Uf+dRp98YRG7m5S1Y5JkKEYu4oxQOECxbNMPd+ilbb6wwr2pYZ/
k2ks+oyYtPgqtWlriIbJMwXOyQEfqNCJgzxUzC2U6idVALYpj+5aK+VTY4Nk1YXw
nLAu8TT40jNYFfss0bDYBzQbm/82m8Q9JIkmoOpX/3WaRaCjaVza7IvRKgDPZutJ
mmrtu5SJ+QgLQLaXvav84KwtXhDbJu4zEbC7tUL0LGSmzbpiiz2DSUJP2jQ0C6nS
wgcACFkHGBLOjKNbjDB1eUhS7ouzxTGgPlsMC89254R7XQP/5EV9H3Quxb48Bxq7
PuW6nNHytppfAIZP18X62oL8hpSgwK1zLe34jzayJlkGIg5O1he4FcJQykvlzrjm
fBvL+hX3TM9exfASQujNXVgxFGPmgb37bE2aQyxZunE1DltJWfHyOhdme9vCuEcB
acz8gR/jcp8OKe4RCEdD1g86CSW2wlMfKfnzuwPPhcw0L3kz6OYcjRr2oMae7uG0
/NFw+PcdHcVKXjiRoJsdCvtN+jRtJhCUn314IskgyKad/UNcELbo7WDBUqHC36Wg
ncM6Sis4oal4jPXJ2JoE
=6ee1
-----END PGP SIGNATURE-----
Merge tag 'v0.19.16'
release v0.19.16
2016-06-13 19:03:59 +02:00
Max Kellermann
4ecd325371
decoder/flac: log seek errors
2016-06-13 18:37:45 +02:00
Max Kellermann
021519f295
command/QueueCommands: eliminate duplicate code in handle_addid()
2016-06-13 18:28:03 +02:00
Max Kellermann
e83685d667
Merge branch 'addid-with-pos' of git://github.com/ewollesen/MPD
2016-06-13 18:27:21 +02:00
Eric Wollesen
81a198a76a
return id for "addid" with position
...
Previously the id was being returned only when a position wasn't
specified.
2016-06-13 10:14:20 -06:00
Max Kellermann
5771d67202
player/Thread: cancel outputs before seeking
...
.. instead of doing it after seeking. After seeking, the command had
no effect, because CheckDecoderStartup() waits for all outputs to
finish. This caused a very long delay while seeking and switching
songs (https://bugs.musicpd.org/view.php?id=4534 ).
2016-06-13 09:13:56 +02:00
Lazaros Koromilas
b2b7974ba0
util/WStringAPI: wcpcpy(3) is not yet supported on OpenBSD/NetBSD
...
Signed-off-by: Lazaros Koromilas <lostd@2f30.org>
2016-06-12 16:36:17 +02:00
Lazaros Koromilas
f59ca94416
net/Resolver: correct includes for gettaddrinfo(3)
...
Signed-off-by: Lazaros Koromilas <lostd@2f30.org>
2016-06-12 16:36:17 +02:00
Max Kellermann
22ff0d80ce
decoder/pcm: add MIME type "audio/x-mpd-float"
2016-06-10 23:06:21 +02:00
Max Kellermann
5a22a0c27d
decoder/pcm: implement RFC 2586 (audio/L16)
...
https://bugs.musicpd.org/view.php?id=4525
2016-06-10 22:52:35 +02:00
Max Kellermann
287ef181ba
util/MimeType: add ParseMimeTypeParameters()
2016-06-10 22:52:35 +02:00
Max Kellermann
92cdea123e
TagStream, decoder/Thread, ...: ignore MIME type parameters for matching plugins
2016-06-10 22:24:13 +02:00
Max Kellermann
e4c7e343c8
util/StringUtil: use CamelCase
2016-06-10 22:08:13 +02:00
Max Kellermann
2ee43c403c
decoder/vorbis: reimplement using class OggDecoder
...
Use libvorbis instead of libvorbisfile, which gives us more control
over the decoding process.
2016-05-14 12:31:12 +02:00
Max Kellermann
24fa3f5e7b
Revert "decoder/Thread: flush last chunk only on success"
...
This reverts commit 995cd95474
. It was
a bad idea because it caused assertion failures when a decoder plugin
aborted with an exception.
2016-05-14 12:31:12 +02:00
Max Kellermann
bbbda7f812
decoder/opus: move code to new class OggDecoder
...
Prepare to reuse the same code for a new Vorbis decoder plugin based
on libvorbis instead of libvorbisfile.
2016-05-14 11:31:31 +02:00
Max Kellermann
e958900380
decoder/vorbis: reimplement _scan_stream() with plain libvorbis
2016-05-14 10:52:52 +02:00
Max Kellermann
74926c1dd3
decoder/opus: move _scan_stream() code to OggReadPacket()
2016-05-14 10:39:53 +02:00
Max Kellermann
2654888782
decoder/OggFind: move to lib/xiph/
2016-05-14 10:34:05 +02:00
Max Kellermann
b5ecfb4c9a
decoder/opus: move code to class OggVisitor
2016-05-13 13:37:49 +02:00
Max Kellermann
07fa3764ef
lib/xiph/OggStreamState: add wrapper for ogg_stream_reset()
2016-05-13 13:37:45 +02:00
Max Kellermann
5acc77a163
decoder/opus: change return types to void
2016-05-13 13:24:32 +02:00
Max Kellermann
0709878b4c
decoder/API: add class StopDecoder
2016-05-13 13:23:24 +02:00
Max Kellermann
662e477028
decoder/opus: throw exceptions instead of returning DecoderCommand::STOP
2016-05-13 13:18:19 +02:00
Max Kellermann
b7b7c381ee
decoder/Thread: catch exceptions
...
Allow decoders to throw std::runtime_error.
2016-05-13 13:01:39 +02:00
Max Kellermann
995cd95474
decoder/Thread: flush last chunk only on success
2016-05-13 13:01:31 +02:00
Max Kellermann
fe8a13f76f
decoder/Thread: move code to DecoderUnlockedRunUri()
2016-05-13 13:00:40 +02:00
Max Kellermann
9252432bc0
decoder/opus: move OggSyncState into class MPDOpusDecoder
2016-05-13 12:25:30 +02:00
Max Kellermann
f057f6768f
decoder/opus: pass DecoderReader to constructor
2016-05-13 12:16:22 +02:00
Max Kellermann
806bf0be8d
decoder/Reader: add methods GetDecoder(), GetInputStream()
2016-05-13 11:27:06 +02:00
Max Kellermann
958506a108
decoder/Reader: change Decoder pointer to reference
2016-05-13 10:40:10 +02:00
Max Kellermann
e8fd771b91
decoder/opus: change Decoder pointers to references
2016-05-13 10:39:36 +02:00
Max Kellermann
fa4178fefa
decoder/opus: remove ogg_page parameter from constructor
...
Initialize the OggStreamState as soon as the first page is seen; no
special code needed in the caller.
2016-05-11 17:57:51 +02:00
Max Kellermann
1af59d31b9
decoder/opus: add method IsInitialized()
2016-05-11 17:27:26 +02:00
Max Kellermann
20758cef30
decoder/opus: make internal methods "private"
2016-05-11 17:27:02 +02:00
Max Kellermann
272938529d
decoder/opus: move everything into anonymous namespace
2016-05-11 17:25:43 +02:00
Max Kellermann
a67b7266ed
util/AllocatedString: work around bogus gcc6 warning
2016-05-11 17:10:15 +02:00
Max Kellermann
f26159a0e3
lib/xiph/OggUtil: move code into class OggSyncState
2016-05-09 16:29:04 +02:00
Max Kellermann
675e8667c2
lib/xiph/OggSyncState: remove unused method ExpectFirstPage()
2016-05-09 16:27:11 +02:00
Max Kellermann
a1a26b70bc
decoder/opus: make opus_serialno a local variable
2016-05-09 15:43:15 +02:00
Max Kellermann
34a7f86a07
decoder/opus: use class OggStreamState in _stream_decode()
2016-05-09 15:41:03 +02:00
Max Kellermann
e7311ac2f3
decoder/opus: use C++11 initializers
2016-05-09 15:41:01 +02:00
Max Kellermann
8d9ecc0c62
decoder/opus: make variables more local
2016-05-09 15:41:00 +02:00
Max Kellermann
f01b991108
decoder/opus: use class OggStreamState in _scan_stream()
2016-05-09 15:40:59 +02:00
Max Kellermann
f80736c3d7
lib/xiph/OggStreamState: add method GetSerialNo()
2016-05-09 15:40:50 +02:00
Max Kellermann
2c7f69cf85
lib/xiph/OggStreamState: add constructor with ogg_page
2016-05-09 15:38:29 +02:00
Max Kellermann
348ecc1118
lib/xiph/OggStreamState: add method PageIn()
2016-05-09 15:29:37 +02:00
Max Kellermann
a9678f0ae0
decoder/opus: fix minor typo
2016-05-09 15:00:04 +02:00
Max Kellermann
461f298d2c
lib/xiph/OggStream: remove obsolete class
2016-05-09 14:55:58 +02:00
Max Kellermann
068de7cf40
encoder/ogg: use class OggStreamState
2016-05-09 14:51:07 +02:00
Max Kellermann
d04eb87c4f
encoder/opus: divert to OggEncoder::Read()
2016-05-09 14:51:05 +02:00
Max Kellermann
8af68db965
lib/xiph/OggStreamState: new ogg_stream_state wrapper
2016-05-09 14:50:39 +02:00
Max Kellermann
1cf632e98b
lib/xiph/OggStream: move code to ReadPage()
2016-05-09 14:22:12 +02:00
Max Kellermann
58c11c3128
encoder/vorbis: move vorbis_info_init() call to constructor
2016-05-09 13:22:59 +02:00
Max Kellermann
efcda95dda
encoder/vorbis: remove vorbis_info_clear() calls from error code paths
...
The destructor will call this in any case.
2016-05-09 13:22:43 +02:00
Max Kellermann
80d2028bac
encoder/vorbis: merge Clear() into the destructor
2016-05-09 13:22:27 +02:00
Max Kellermann
215213fc2c
encoder/vorbis: add wrapper class for vorbis_comment
2016-05-09 12:22:22 +02:00
Max Kellermann
0998097253
encoder/{vorbis,opus}: move common code to class OggEncoder
2016-05-04 18:52:57 +02:00
Max Kellermann
b376536a3b
encoder/Interface: convert PreparedEncoder to abstract class
2016-05-04 18:32:52 +02:00
Max Kellermann
e7edc02647
encoder/Interface: move instance methods to abstract class
...
Rename struct Encoder to PreparedEncoder, and add a new (abstract)
class Encoder which represents one encoder instance.
2016-05-04 16:32:31 +02:00
Max Kellermann
69bf835059
encoder/vorbis: move code into the struct
2016-05-04 16:22:59 +02:00
Max Kellermann
b97ffddfe8
encoder/vorbis: use CamelCase
2016-05-04 16:21:47 +02:00
Max Kellermann
6407b7c591
output/recorder: use C++11 initializers
2016-05-04 15:18:57 +02:00
Max Kellermann
e14cd92d59
output/shout: use AudioOutputWrapper
2016-05-04 15:06:29 +02:00
Max Kellermann
73cadd1798
output/shout: dispose encoder in destructor
2016-05-04 15:05:48 +02:00
Max Kellermann
fb9840f1f8
output/shout: call shout_shutdown() in destructor
2016-05-04 15:03:55 +02:00
Max Kellermann
492aaa3375
output/shout: use C++11 initializers
2016-05-04 14:46:45 +02:00
Max Kellermann
33c5da700d
encoder/opus: move functions into the struct
2016-05-03 23:56:47 +02:00
Max Kellermann
48d3af7d9a
encoder/opus: use CamelCase
2016-05-03 23:53:42 +02:00
Max Kellermann
9b3470eabd
lib/xiph/OggStream: use C++11 initializer
2016-05-03 23:46:56 +02:00
Max Kellermann
86a505b4f3
lib/xiph/OggSyncState: disallow copying
2016-05-03 23:45:32 +02:00
Max Kellermann
ed6c6296eb
{de,en}coder/{vorbis,flac,opus}: move several libraries to lib/xiph/
2016-05-03 23:40:29 +02:00
Max Kellermann
7adbd00811
decoder/{vorbis,flac,opus}: move OggCodec.cxx to libxiph.a
2016-05-03 12:54:47 +02:00
Max Kellermann
1c91d19163
decoder/OggUtil: pass Reader instance to OggFeed()
2016-05-03 00:05:31 +02:00
Max Kellermann
f491135318
decoder/Reader: new Reader implementation
2016-05-03 00:05:31 +02:00
Max Kellermann
a7ced00520
input/Reader: new Reader implementation wrapping InputStream
2016-05-03 00:05:31 +02:00
Max Kellermann
280d35a053
decoder/api: use class ScopeLock
2016-05-02 23:33:08 +02:00
Max Kellermann
eca6b9f0af
thread/Mutex: add method ScopeLock::Unlock()
2016-05-02 23:32:44 +02:00
Max Kellermann
cc9345e703
encoder/wave: use CamelCase
2016-04-30 14:29:14 +02:00
Max Kellermann
3fb8f3ec95
release v0.19.15
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAABCAAGBQJXJKNhAAoJECNuiljG20US7pcP/A2sFmmf+QlKvV5G88D+UxbX
kIoz3d5mHRoW4kJcbhUKUVe9pIkQEWTVC4XNNi8ggO8/MUa7+FpUPR0bJDgmLnnm
jM3tV/eVXUmPgXTgj1PT0jOTNCNNJx69JYhz7nMGIAbxubs7hRGTfGgJYnTQImsW
yDVst0BH7C6i21kmAWjQYoFZu0h7ZoyBOZTHAyR/6wF6Bmlc5JAEV6eBRyrU3MLN
Mma4+rJhMh+2206SqUBJEVwEszaTJnmu7Xi5Zmk+LGSrykJt93bQio7k2hJ5PvKJ
feFCXl1IpobUMpPJ+Nv1QraTKO9lg5oEYOwlcxJf4JwfqpRk+oXr+MZ52iR9jMtw
otcux72CYMmSJOC2Sl8cq9TdQCOb7XxhDjv+Phf44WG5Ns1QJQY7rvrGLT0gFSLx
MVD2WKJCrWFgql6ugf9lhsrt7x8llD9anNqbJNamXmGoL0NFJs6sg9d02vbRuIDz
xOcBPKnDB/Ao1TxXT4/Ck6gzYwTd+sxvsrC2XwthDXTiM+qe+pAjF+KFKd5thIUs
Hh296GL8Ch68X+6HXVkCKwyW9F503LFAcXTlP6XQUnkpPHNU536VdUjaHmx557jR
3cY7d67gHSVxllDQJYp0GIMIKyaZhQ4V7w3l1IKzPc1KrhryOxvlbAaYVSHo26nI
yZMKwFJ1L0l9j76kZG4a
=GyO9
-----END PGP SIGNATURE-----
Merge tag 'v0.19.15'
release v0.19.15
2016-04-30 14:28:25 +02:00
Max Kellermann
c9553411bb
encoder/wave: add constant WAVE_FORMAT_PCM
2016-04-30 13:57:09 +02:00
Max Kellermann
62221adf55
encoder/wave: fix indent
2016-04-30 13:45:52 +02:00
Florian Schlichting
27d4b15925
DecoderBuffer: add missing include
...
> In file included from src/decoder/DecoderBuffer.cxx:21:0:
> src/decoder/DecoderBuffer.hxx:41:20: error: 'uint8_t' was not declared in this scope
> DynamicFifoBuffer<uint8_t> buffer;
> ^
> src/decoder/DecoderBuffer.hxx:41:27: error: template argument 1 is invalid
> DynamicFifoBuffer<uint8_t> buffer;
> ^
> src/decoder/DecoderBuffer.hxx: In member function 'void DecoderBuffer::Clear()':
> src/decoder/DecoderBuffer.hxx:61:10: error: request for member 'Clear' in '((DecoderBuffer*)this)->DecoderBuffer::buffer', which is of non-class type 'int'
> buffer.Clear();
> ^
> src/decoder/DecoderBuffer.hxx: In member function 'size_t DecoderBuffer::GetAvailable() const':
> src/decoder/DecoderBuffer.hxx:78:17: error: request for member 'GetAvailable' in '((const DecoderBuffer*)this)->DecoderBuffer::buffer', which is of non-class type 'const int'
> return buffer.GetAvailable();
> ^
> src/decoder/DecoderBuffer.hxx: In member function 'ConstBuffer<void> DecoderBuffer::Read() const':
> src/decoder/DecoderBuffer.hxx:87:19: error: request for member 'Read' in '((const DecoderBuffer*)this)->DecoderBuffer::buffer', which is of non-class type 'const int'
> auto r = buffer.Read();
> ^
> src/decoder/DecoderBuffer.hxx:88:27: error: could not convert '{<expression error>, <expression error>}' from '<brace-enclosed initializer list>' to 'ConstBuffer<void>'
> return { r.data, r.size };
> ^
> src/decoder/DecoderBuffer.hxx: In member function 'void DecoderBuffer::Consume(size_t)':
> src/decoder/DecoderBuffer.hxx:105:10: error: request for member 'Consume' in '((DecoderBuffer*)this)->DecoderBuffer::buffer', which is of non-class type 'int'
> buffer.Consume(nbytes);
> ^
This seems to be caused by a lacking include, fixed by the below patch.
I'm unsure what made this appear now, though, compiler and toolchain
libraries seem to be the same upstream versions that built 0.19.14-1
just fine in late March.
2016-04-25 08:30:27 +02:00
Max Kellermann
fc3e0dfcd1
fs/AllocatedPath: add method FromUTF8Throw()
2016-04-21 14:27:32 +02:00
Max Kellermann
6513ff92a7
fs/Charset: throw exception on error
2016-04-21 14:23:55 +02:00
Max Kellermann
a0eb6d0976
PlaylistFile: use the new AllocatedPath::FromFS() range overload
2016-04-21 14:22:59 +02:00
Max Kellermann
7530770842
fs/AllocatedPath: add FromFS() with pointer range
2016-04-21 14:21:24 +02:00
Max Kellermann
11ea72e240
fs/AllocatedPath: make constructor "explicit"
2016-04-21 14:20:56 +02:00
Max Kellermann
c98330909a
db/update/Walk: use AllocatedPath methods instead of PathTraitsFS
2016-04-21 14:15:01 +02:00
Max Kellermann
bec6fa4ad7
lib/icu/Converter: throw exception on error
2016-04-21 14:03:27 +02:00
Max Kellermann
ac7ce73526
player/Thread: cancel audio when decoder startup on seek fails
...
Fixes assertion failure in MultipleOutputs::Open() after seeking to a
failing song during playback.
2016-04-21 14:03:27 +02:00
Max Kellermann
4c6619e6c5
output/MultipleOutputs: use C++11 initializers
2016-04-21 13:28:31 +02:00
Max Kellermann
e8121fdc11
decoder/Thread: fail decoder_input_stream_open() if STOP is received
...
Fixes an assertion failure in tag_ape_scan() which is because
decoder_input_stream_open() returns an "unready" InputStream.
2016-04-21 13:15:34 +02:00
Max Kellermann
21f17270a1
lib/icu/Util: UCharFromUTF8() throws on error
2016-04-21 11:20:41 +02:00
Max Kellermann
423cd5900e
lib/icu/Util: fold UCharToUTF8Throw() into UCharToUTF8()
2016-04-21 10:58:21 +02:00
Max Kellermann
b9f535cd49
lib/icu/Win32: throw exception on error
2016-04-21 10:15:40 +02:00
Max Kellermann
c731a82b71
decoder/opus: limit the number of packets in _scan_stream()
2016-04-19 13:08:07 +02:00
Max Kellermann
e6fad97edc
decoder/opus: support bigger OpusTags packets
...
Required for OpusTags packets which contain artwork.
See https://bugs.musicpd.org/view.php?id=4520
2016-04-19 13:05:42 +02:00
Max Kellermann
e228144159
command/playlist: eliminate spl_print() calls
...
playlist_file_print() already handles stored playlists. spl_print()
is never called with a successful result.
2016-04-13 19:47:41 +02:00
Max Kellermann
9431a7b022
playlist/Any: fix documentation typo
2016-04-13 19:23:14 +02:00
Max Kellermann
cd041f8574
decoder/Plugin: container_scan() returns AllocatedString
2016-04-13 12:23:10 +02:00
Max Kellermann
8ba3378096
util/AllocatedString: add operator==(nullptr)
2016-04-13 12:23:10 +02:00
Max Kellermann
225984822d
lib/icu/Win32: use std::unique_ptr
2016-04-13 11:53:35 +02:00
Max Kellermann
01b68db30e
lib/icu/Converter: Create() throws exception on error
2016-04-13 10:04:19 +02:00
Max Kellermann
33fdaa5b6d
Merge branch 'v0.19.x'
2016-04-13 10:03:40 +02:00
Max Kellermann
70495aada1
decoder/ffmpeg: don't copy the AVPacket in ffmpeg_send_packet()
...
Reduce some overhead. It is not necessary to copy the object.
2016-04-13 09:04:51 +02:00
Max Kellermann
f243f615ef
decoder/ffmpeg: convert pointers to references
2016-04-13 09:01:54 +02:00
Max Kellermann
6a1f5667f9
util/FormatString: return AllocatedString
2016-04-12 22:59:23 +02:00
Max Kellermann
fab5f58ee0
util/AllocatedString: add operator[]
2016-04-12 22:57:13 +02:00
Max Kellermann
55be8e6f52
util/AllocatedString: add typedef size_type
2016-04-12 22:56:57 +02:00
Max Kellermann
c75b9b0d12
util/StringPointer: add typedef reference_type
2016-04-12 22:55:12 +02:00
Max Kellermann
9b85446808
util/StringPointer: rename typedef pointer to pointer_type
2016-04-12 22:53:06 +02:00
Max Kellermann
fd5d42836f
Client: add WriteString()
2016-04-12 22:32:38 +02:00
Max Kellermann
4eaa82fd22
lib/icu/Util: add overload which throws exception
2016-04-12 22:08:48 +02:00
Max Kellermann
a497cc46f9
lib/icu/Util: use std::unique_ptr
2016-04-12 22:07:23 +02:00
Max Kellermann
178f737971
lib/icu/Collate: use std::unique_ptr
2016-04-12 21:55:14 +02:00
Max Kellermann
74963bce9d
lib/icu/Collate: use class AllocatedArray
2016-04-12 21:55:14 +02:00
Max Kellermann
33a4dbe1e5
lib/icu/Util: use class AllocatedArray
2016-04-12 21:42:14 +02:00
Max Kellermann
60f32d0bce
util/AllocatedArray: new utility class
2016-04-12 21:32:56 +02:00
Max Kellermann
dce36d3e55
lib/icu/Util: remove obsolete documentation
2016-04-12 21:32:56 +02:00
Max Kellermann
807c72b2f1
decoder/ffmpeg: use av_packet_unref() instead of av_free_packet()
...
av_free_packet() was deprecated in FFmpeg 3.0.
2016-04-12 21:15:05 +02:00
Max Kellermann
4f393553f4
playlist/Song: catch SongLoader exceptions
...
Fixes aborted "load" commands due to SongLoader failure.
2016-04-12 21:09:53 +02:00
Max Kellermann
74dbaade6f
decoder/Thread: use "ffmpeg" as fallback instead of "mad"
...
Adds support for stream codecs which havn't been explicitly listed in
ffmpeg_mime_types.
2016-03-30 00:58:48 +02:00
Max Kellermann
2deb5b7fec
sticker/SongSticker: add missing <stdexcept> include
...
For std::runtime_error. See http://bugs.musicpd.org/view.php?id=4509
2016-03-30 00:35:25 +02:00
Max Kellermann
53677172f2
notify: use "constexpr" only with glibc
...
The Mutex and Cond constructors are only "constexpr" with glibc, and
this is what this #ifdef is about.
Backport of commit 459a812a
See http://bugs.musicpd.org/view.php?id=4511
2016-03-30 00:31:01 +02:00
Max Kellermann
2fd5182608
db/Interface: GetSong() throws exception on error
2016-03-19 00:19:50 +01:00
Max Kellermann
7ad7caa2ae
queue/PlaylistUpdate: extend catch clause
2016-03-19 00:19:47 +01:00
Max Kellermann
6d1710c74f
PlaylistPrint: catch Database::GetSong() exceptions
2016-03-19 00:16:01 +01:00
Max Kellermann
233b8d0129
sticker/Song: catch Database::GetSong() exceptions
2016-03-19 00:14:40 +01:00
Max Kellermann
f55bdf07d3
db/Interface: Open() throws exception on error
2016-03-19 00:05:11 +01:00
Max Kellermann
6c2b532ae3
db/proxy: throw exception on error
2016-03-19 00:02:50 +01:00
Max Kellermann
2539f294e4
db/proxy: move code to MakeError()
...
Use this function instead of CheckError() when we already know an
error has occurred.
2016-03-18 23:43:28 +01:00
Max Kellermann
b6a3ce9305
db/proxy: fix inconsistent error handling in VisitUniqueTags()
2016-03-18 23:42:04 +01:00
Max Kellermann
b07495aae9
db/proxy: remove superfluous CheckError() call
2016-03-18 23:41:24 +01:00
Max Kellermann
686a53215d
db/proxy: use AtScopeExit()
2016-03-18 23:10:42 +01:00
Max Kellermann
6fd7d8191e
db/simple: refactor Check() to throw exception
2016-03-18 22:21:09 +01:00
Max Kellermann
2ccd1cc9f0
db/simple: remove misplaced "pure" attribute
2016-03-18 22:18:09 +01:00
Max Kellermann
8167bdd978
db/simple: handle Database::Open() exceptions in Mount()
2016-03-18 18:55:54 +01:00
Max Kellermann
dfb3e34f7b
db/lazy: remove obsolete class
...
Obsoleted by commit d4d4d621
2016-03-18 18:48:27 +01:00
Max Kellermann
45ee75055e
db/upnp: remove obsolete code comment
2016-03-18 18:48:00 +01:00
Max Kellermann
5da4e321c0
Stats: catch exceptions
2016-03-18 18:46:43 +01:00
Max Kellermann
e8519fecb4
release v0.19.14
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAABCAAGBQJW7DpiAAoJECNuiljG20USwwkP/1z3HeJjzzrwySH9MVeFpVtR
fr9XL2pO6zTcaVAIk/fNWtrcT6G5IuK079GKVa2jADN8KRMfCvGDEgHfGevjRNmc
USXkUm2pij67S3Ic74WhDISt32gYzBOCo/nFIFncLyjXXPW4WRq/3rb8tMwffZen
d/wqZmzHGEom8z0BTLASY/QM2KTBXOHgAhTb4M8lowxlesK8O/6Mx14UxgcIKIDf
1lqRhaF6NRS56uwjt8GwkaH9Td8wJG/inVLQo08z26ycJNaPrkxSNrWsSzQdBr8Q
DanbH4nefj8L33PVCV9nNPSjGe5s3R3D9WVEvt+cJ71UqBUQJkYgXaYRLQVEs1Mk
80a9MlFECF1UiS9FwmnUXRAY0Zzb19NLjm+v3CeMANqoFQ/OQaIe3/iaM0hT0yto
akHWhgEE4SuwcHPpUXQlKlbYHW6DaHBULwpzcKxFUeQkzx5m4FshBSL73TEEyv8+
bRc4tGIqA2Pep/Ptg3R9mJZ5wr/crtJby9FxNUkXiGZeiHEya+mRdGVyogMnce/K
BTg1bhiaE7Ofdxd4NuUIOZ6OkjpFnnQajJwnR1dJrZG+avOrGjcBPH5QGHWEYfs7
hVQhea2ehbcqQPq5celaZkL30SCxZmuN/0Lbmc8y7tpshLkdSUxmBoPSjvUD/UUz
JyZf+npL5nmtF0Pqz7W8
=McwP
-----END PGP SIGNATURE-----
Merge tag 'v0.19.14'
release v0.19.14
2016-03-18 18:41:14 +01:00
Max Kellermann
06c172838c
queue/PlaylistUpdate: catch and ignore DatabaseError
...
Fixes regression by commit 42f7df96
2016-03-18 18:25:16 +01:00
Max Kellermann
1543dd85b5
queue/Playlist: don't let StaleSong() interrupt playback
...
http://bugs.musicpd.org/view.php?id=4470
2016-03-18 18:08:13 +01:00
Max Kellermann
f37a1026f9
queue/Playlist: rename DeleteSong() to StaleSong()
2016-03-18 18:01:01 +01:00
Max Kellermann
91fb7fa3d8
queue/Playlist: pass unsigned to PlayOrder()
2016-03-18 17:49:29 +01:00
Max Kellermann
7b70153068
queue/Playlist: document that current/queued are "order number"
2016-03-18 17:35:29 +01:00
Max Kellermann
7e096ee2c5
db/update/Remove: update code comment
2016-03-18 16:58:06 +01:00
Max Kellermann
86a90daf1b
db/update/Remove: pass URI to Remove()
2016-03-18 16:57:43 +01:00
Max Kellermann
42f7df9681
db/update/Remove: reimplement as a non-blocking queue
...
This reduces overhead for two reasons:
1. calls to Remove() are non-blocking
2. RunDeferred() may work on large chunks at a time, reducing the
number of RunDeferred() calls
2016-03-18 16:43:02 +01:00
Max Kellermann
2edad38c7c
db/DatabaseListener: pass URI to OnDatabaseSongRemoved()
...
There's no point in passing a LightSong reference here; the callee is
interested only in the URI.
2016-03-18 16:22:33 +01:00
Max Kellermann
296ee4961e
sticker/Song: add _delete() overload with "const char *"
2016-03-18 16:21:26 +01:00
Max Kellermann
b1becddf11
util/StringView: add method Strip()
2016-03-18 15:40:49 +01:00
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
a3afd5178c
tag/TagPool: optimize _dup_item()
...
When a reference counter is at its limit, don't allocate a new
TagPoolSlot - that would result in many TagPoolSlot instances with
ref==1. This in turn would make the linked list very very large,
which means quadratic runtime for many operations.
2016-03-14 13:08:04 +01:00
Max Kellermann
f1285a6dfd
tag/TagPool: add constexpr MAX_REF
2016-03-14 08:07:22 +01:00
Max Kellermann
cf7c1afb93
tag/TagPool: use prime number for NUM_SLOTS
2016-03-14 08:04:51 +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
Max Kellermann
5b8dce7456
db/simple: throw DatabaseError on error
2016-02-28 11:40:59 +01:00
Max Kellermann
de938eb621
db/simple: handle exception in Open() properly, fix memory leak
2016-02-28 11:40:39 +01:00
Max Kellermann
83cc6c0835
db/simple: use second Error instance in Open()
...
Don't need to clear the caller-specified one.
2016-02-28 11:38:22 +01:00
Max Kellermann
304d78a4c8
command/error: remove playlist_domain from ToAck(Error)
...
playlist_domain is no longer used for class Error.
2016-02-28 11:17:43 +01:00
Max Kellermann
347590751c
SongLoader: throw PlaylistError on error
2016-02-28 11:15:20 +01:00
Max Kellermann
fe4b1f96f1
SongLoader: use temporary stack variable, no heap allocation
...
Improved exception-safety.
2016-02-28 11:08:00 +01:00
Max Kellermann
9de984f7f8
queue/PlaylistControl: throw PlaylistError on error
2016-02-28 11:04:35 +01:00
Max Kellermann
b6cb9b853a
queue/PlaylistEdit: throw PlaylistError on error
2016-02-28 11:02:36 +01:00
Max Kellermann
50b930f283
playlist/edit: use std::unique_ptr
2016-02-28 11:00:59 +01:00
Max Kellermann
cbeb809798
playlist/queue: use std::unique_ptr
2016-02-28 10:58:50 +01:00
Max Kellermann
ea626368a0
queue/QueueCommands: use std::unique_ptr
2016-02-28 10:56:37 +01:00
Max Kellermann
c81747dd15
queue/PlaylistTag: throw PlaylistError on error
2016-02-28 10:40:31 +01:00
Max Kellermann
f8810d7caf
PlaylistError: add NotPlaying()
2016-02-28 10:38:17 +01:00
Max Kellermann
92f54f0b59
output/alsa: disable DoP if it fails
...
See http://bugs.musicpd.org/view.php?id=4496
2016-02-28 10:19:19 +01:00
Max Kellermann
ddce544b53
output/alsa: move the PcmExport::Open() call to Open()
2016-02-28 10:15:54 +01:00
Max Kellermann
21fb7eea82
output/alsa: probe DSD_U32 if DSD_U8 fails
...
See http://bugs.musicpd.org/view.php?id=4485
2016-02-28 09:59:09 +01:00
Max Kellermann
fd7eb43366
output/alsa: use CamelCase
2016-02-28 09:44:15 +01:00
Max Kellermann
a1add27c4c
output/alsa: fix indent
2016-02-28 09:35:57 +01:00
Max Kellermann
fc8194ee1e
output/alsa: fix typo
2016-02-28 09:35:55 +01:00
Max Kellermann
8ffcdb73e8
output/alsa: remove option "use_mmap"
...
MPD does not really take advantage of memory-mapped I/O by generating
data right into the ALSA buffer; using plain snd_pcm_mmap_writei() has
no advantage compared to snd_pcm_writei(). Let's kill this
non-feature.
2016-02-28 09:30:59 +01:00
Max Kellermann
111528e51c
output/alsa: add #ifdef ENABLE_DSD
...
Fixes the --disable-dsd build.
See http://bugs.musicpd.org/view.php?id=4498
2016-02-28 07:29:37 +01:00
Max Kellermann
5628dcf47e
pcm/export: add #ifdef ENABLE_DSD to struct Params
2016-02-27 08:02:01 +01:00
Max Kellermann
fb4f02cd38
pcm/PcmExport: add flag to export to DSD_U32
2016-02-27 07:42:09 +01:00
Max Kellermann
d1be643c0d
pcm/PcmDsd: add converter from DSD_U8 to DSD_U32
2016-02-27 07:41:58 +01:00
Max Kellermann
c9761bf6af
output/alsa: pass PcmExport::Params to alsa_setup()
2016-02-27 07:35:35 +01:00
Max Kellermann
4a47265224
output/alsa: pass PcmExport::Params to SetupDop()
2016-02-27 07:34:58 +01:00
Max Kellermann
f0f3017a76
pcm/export: move Open() parameters to struct Params
2016-02-26 18:55:27 +01:00
Max Kellermann
d3f0b62348
pcm/export: another #ifdef ENABLE_DSD fix
2016-02-26 18:55:06 +01:00
Max Kellermann
6a53fb33da
output/alsa: basic infrastructure for DSD_U16 and DSD_U32
2016-02-26 18:44:58 +01:00
Max Kellermann
dcaf299864
pcm/export: add #ifdef ENABLE_DSD
2016-02-26 18:44:23 +01:00
Max Kellermann
1d67aa7bf2
update copyright year to 2016
2016-02-26 17:54:05 +01:00
Max Kellermann
e56066f721
pcm/dsd: use PcmBuffer::GetT()
2016-02-26 17:41:18 +01:00
Max Kellermann
5e3844ac13
pcm/dsd: use MAX_CHANNELS
2016-02-26 17:41:06 +01:00
Max Kellermann
cb4f5d454b
pcm/dsd: use std::array
2016-02-26 17:38:46 +01:00
Max Kellermann
e5c6fe1bb2
player/control: unpause in Play()
...
Fix regression by commit 45f6129a
See http://bugs.musicpd.org/view.php?id=4477
2016-02-26 17:33:21 +01:00
Max Kellermann
bf65a9732c
decoder/thread: clear Decoder::error before attempting another plugin
...
Keep only the last error. This fixes bogus aborts due to the error
check in decoder_get_virtual_command().
2016-02-26 17:30:24 +01:00
Max Kellermann
1388b3219a
decoder/thread: fix typo in comment
2016-02-26 16:48:27 +01:00
Max Kellermann
d9e8ce22cb
util/Error: use std::exception_ptr instead of std::exception
...
Necessary to preserve type information. The try/catch sequence didn't
work previously.
Same fix as in commit 1c904000
2016-02-26 16:32:24 +01:00
Max Kellermann
224944528f
TagArchive: include cleanup
2016-02-26 15:10:33 +01:00
Max Kellermann
cdcd3e77b3
TagArchive: refactor TagHandler overload to use ArchiveFile
2016-02-26 15:07:30 +01:00
Max Kellermann
ed5058a363
TagArchive: remove obsolete overload
2016-02-26 15:07:00 +01:00
Max Kellermann
a670ff6d3e
SongUpdate: remove obsolete overload UpdateFileInArchive(Storage)
2016-02-26 15:06:16 +01:00
Max Kellermann
32f6d34904
db/update/Archive: rescan tags on existing songs in archive
...
This is the final piece for full ID3/APE support in archives.
2016-02-26 15:05:49 +01:00
Max Kellermann
d3ae05506d
SongUpdate: remove archive handling from LoadFile()
...
This code has been moved to LoadFromArchive().
2016-02-26 15:05:44 +01:00
Max Kellermann
96f4394dce
db/update/Archive: pass ArchiveFile to Song constructor
...
Don't open the ZIP file again and again for each song file.
2016-02-26 15:05:40 +01:00
Max Kellermann
35567e6507
SongUpdate: add UpdateFileInArchive(ArchiveFile&)
2016-02-26 14:53:37 +01:00
Max Kellermann
ae37e25452
TagArchive: add overload with ArchiveFile&
2016-02-26 14:46:01 +01:00
Max Kellermann
c4537fe6f6
TagArchive: add TagBuilder overload with ScanGenericTags() fallback
...
Load APE/ID3 tags from archives.
2016-02-26 14:03:16 +01:00
Max Kellermann
677334f5a9
tag/TagId3: re-add missing tag_id3_load()==nullptr check
2016-02-26 14:00:30 +01:00
Max Kellermann
3d9652ae35
TagStream: add TagBuilder overload with ScanGenericTags() fallback
...
This commit adds support for APE/ID3 tags from NFS/SMB files.
See http://bugs.musicpd.org/view.php?id=4270
2016-02-26 13:48:38 +01:00
Max Kellermann
a9130cb99c
TagFile: add TagBuilder overload with ScanGenericTags() fallback
2016-02-26 13:48:38 +01:00
Max Kellermann
b1d60b5c85
TagArchive: use InputStreamPtr
2016-02-26 13:48:38 +01:00
Max Kellermann
99a05c56ad
tag/Generic: use InputStream::LockRewind() instead of Rewind()
...
Fixes deadlock.
2016-02-26 13:48:38 +01:00
Max Kellermann
cfc65397b3
tag/Generic: clarify documentation on InputStream overload
2016-02-24 00:01:51 +01:00
Max Kellermann
cd8fd1ef42
tag/Generic: remove redundant documentation
2016-02-24 00:01:30 +01:00
Max Kellermann
6350089e51
release v0.19.13
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAABCAAGBQJWzMnGAAoJECNuiljG20US5yYP/jL9A313aMgUO/R8eVGNc7uJ
CwiKROtgd+M47si1qdduzdrPKrFK2tEGYT0El5uQsyDuIsmPB01c3ZqnlM8oO6ca
5tXXJiEvyMkupCEzAajTHqvDCyPx0+o1ektYm9SouAULjOMztIpsVU3oKc8Z78Yc
TkpaRwUjNaekGLf0kATesBYnWkKR7S/TLYKmaKUaPCcK/i2S8YhTC57a1yZjg3lE
w57Kh+tFLZCSiZChk9A5D6w1kKzDgiyNGRYK4F2TRfiQ6hML4F45EFgzfCg+zHi8
+OIE9C1ZQt/NQ6mib+OUWoGuHtfjR20F/OFnQEYvkyXQ32j1sbALe7IHCceX7IHl
U88hcIh2yEr1x3TUaVyYPLze4FBq/Uxv/gFH8FVKTWmcb90MJgXCNFbO3sfO9kk0
KYK0IDoHE9MSmWhblA1FFFHU8VmCMsTN0VhBan+XP2wgXnGX+UvjU7AWJm4Fkwx0
H8uP0Si5wtI9DZ+2SRyGhMfW/+pHsqD+O6PoSSfUyU3ZnPy+cAVEC+67oKJ9pZkA
najeYaMt0Kz88RvLEwNeLkiys62O8aTsBpfjeNfmUAISJzZZbIvC20tyroHrju30
TgbXff2Hnx4q+NQ7nbQN5HMVZ2JLLPMYYw+N0dP41g/ULubHS6btGOVwgTWoFwBo
i2L1uscoD1ONxIEOlIvl
=X7s3
-----END PGP SIGNATURE-----
Merge tag 'v0.19.13'
release v0.19.13
2016-02-23 22:13:43 +01:00
Max Kellermann
39fa949345
queue/Playlist: move only the tag items in TagModified()
...
Fixes disappearing duration of remote songs during playback.
See http://bugs.musicpd.org/view.php?id=4492
2016-02-23 21:01:55 +01:00
Max Kellermann
e1d7a5cbf5
DetachedSong: add method MoveTagItemsFrom()
2016-02-23 20:59:44 +01:00
Max Kellermann
f3cefaf043
tag/Tag: move code to MoveItemsFrom()
2016-02-23 20:57:56 +01:00
Max Kellermann
b3460f3f54
configure.ac, unix/Daemon: check for initgroups() at configure time
...
The initgroups() manpage says we need to check for _BSD_SOURCE. The
thing is that glibc deprecated this macro, and doesn't define it
anymore, effectively breaking all MPD supplementary groups.
The real fix is to check for initgroups() availability at configure
time, instead of relying on the deprecated _BSD_SOURCE macro.
2016-02-23 20:13:34 +01:00
Max Kellermann
8e5a67ed9f
tag/TagId3: eliminate dummy function when libid3tag is disabled
2016-02-23 11:16:19 +01:00
Max Kellermann
cccbcf510a
tag/{Id3,Ape}: remove Path overloads
2016-02-23 11:14:27 +01:00
Max Kellermann
a1e680fec7
decoder/thread: open InputStream in decoder_run_file() in any case
...
decoder_load_replay_gain() will create the InputStream anyway, so
we're not saving any overhead by opening the InputStream on demand
only.
2016-02-23 11:14:12 +01:00
Max Kellermann
1b58bd64ff
decoder/thread: use typedef InputStreamPtr
2016-02-23 11:14:11 +01:00
Max Kellermann
196de8c758
decoder/thread: load APE replay gain from remote files
2016-02-23 10:57:03 +01:00
Max Kellermann
222b777552
tag/ApeReplayGain: add overload with InputStream& parameter
2016-02-23 10:42:41 +01:00
Max Kellermann
b5c206d3ae
tag/Generic: use common InputStream for APE and ID3
2016-02-23 10:27:31 +01:00
Max Kellermann
17ace95268
tag/Generic: add overload with InputStream& parameter
2016-02-23 10:18:07 +01:00
Max Kellermann
779d73f94b
tag/TagId3: add overload with InputStream& parameter
2016-02-23 10:15:38 +01:00
Max Kellermann
73307bf2e7
tag/TagHandler: pass by reference
2016-02-23 10:10:13 +01:00
Max Kellermann
7623c1c5cb
SongUpdate: move tag_scan_fallback() to tag/Generic.cxx
2016-02-22 18:00:49 +01:00
Max Kellermann
de568c84c2
tag/ApeLoader: use CamelCase
2016-02-22 17:53:06 +01:00
Max Kellermann
1f5b9c6185
tag/ApeLoader: use std::unique_ptr
2016-02-22 17:50:15 +01:00
Max Kellermann
a5f8fd774d
tag/handler: use CamelCase
2016-02-22 17:38:06 +01:00
Max Kellermann
cc5443c38e
tag/ApeLoader: use class InputStream instead of FILE*
...
Prepare for APE tag support on userspace NFS/SMB/CIFS mounts.
2016-02-22 17:30:36 +01:00
Max Kellermann
8a86460b8f
tag/Id3Load: use class InputStream instead of FILE*
...
Prepare for ID3 support on userspace NFS/SMB/CIFS mounts.
2016-02-22 17:30:36 +01:00
Max Kellermann
7ae9e49f51
playlist/Stream, db/upnp: add missing includes
2016-02-22 17:30:36 +01:00
Max Kellermann
c682d087d9
tag/Id3Load: optimized ID3v1 loader
...
Use a 128 byte buffer instead of reading 10 bytes first and then 118.
2016-02-22 13:14:38 +01:00
Max Kellermann
57da5c0841
tag/Id3Load: simplify end offset calculation
2016-02-22 13:14:37 +01:00
Max Kellermann
a224722ae2
tag/Id3Load: add constant ID3V1_SIZE
2016-02-22 13:14:36 +01:00
Max Kellermann
283ef5b163
tag/Id3Load: use ID3_TAG_QUERYSIZE instead of integer literal
2016-02-22 13:14:35 +01:00
Max Kellermann
09a188bfd9
input/InputStream: add method Skip()
2016-02-22 13:14:19 +01:00
Max Kellermann
10f086854b
tag/Id3Load: remove unnecessary seek
2016-02-21 13:34:16 +01:00
Max Kellermann
d67c6c37e3
archive/bzip2: remove HAVE_OLDER_BZIP2 check
...
The check was added in commit 98fd9b7d
, but there was never a
definition.
2016-02-21 13:19:00 +01:00
Max Kellermann
136725dfb1
archive/bzip2: convert struct to class
2016-02-21 13:18:25 +01:00
Max Kellermann
438895842c
archive/bzip2: move bz2_fillbuffer into struct Bzip2InputStream
2016-02-21 13:17:22 +01:00
Max Kellermann
82b8f4f1ce
archive/bzip2: use C++11 initializer
2016-02-21 13:16:27 +01:00
Max Kellermann
0705f42cf8
playlist/Plugin: pass InputStreamPtr&& to open_stream()
...
Obsolete class CloseSongEnumerator, which was a kludge.
2016-02-21 12:53:47 +01:00
Max Kellermann
cadc67ea40
input: wrap InputStream in std::unique_ptr
2016-02-21 08:03:32 +01:00
Max Kellermann
054e9ecaae
tag/Id3Load: split tag_id3_read()
2016-02-21 07:14:04 +01:00
Max Kellermann
84fe3bfa87
tag/Id3Load: don't seek twice in tag_id3_read()
...
Copy the query buffer to the allocated buffer, and read only the
remaining data.
2016-02-19 19:43:05 +01:00
Max Kellermann
2ef8403bfa
tag/Id3Load: don't read again if we already have enough data
2016-02-19 19:40:23 +01:00
Max Kellermann
1d3b2baee7
tag/Id3Load: manage id3_tag* with std::unique_ptr
2016-02-19 19:16:40 +01:00
Max Kellermann
86de876b24
tag/TagId3: move tag_id3_load() to Id3Load.cxx
2016-02-19 19:06:06 +01:00
Max Kellermann
8a9f04f7fe
tag/Id3: catch exceptions
2016-02-19 18:23:54 +01:00
Max Kellermann
98bd4dfe04
fs/io/FileReader: add method Skip()
2016-02-19 18:18:25 +01:00
Max Kellermann
8e0e4d7c04
system/FileDescriptor: add method Skip()
2016-02-19 18:18:12 +01:00
Max Kellermann
a5e8269c72
tag/{Aiff,Riff}: allow fstat() to fail
...
Omit the file size check if we don't know the size.
2016-02-19 18:16:14 +01:00
Max Kellermann
0acc88cde5
Merge branch 'v0.19.x'
2016-02-19 18:16:04 +01:00
Chris Spiegel
1e0ad1f6bf
Add TAK as a supported FFmpeg format.
2016-02-19 17:32:48 +01:00
Max Kellermann
4abcb08cc9
tag/{aiff,riff}: fix ID3 chunk padding
...
Apply padding only to the fseek(), not to the chunk size. This fixes
bogus "failed to read riff chunk" messages when the last chunk has an
odd size.
See http://bugs.musicpd.org/view.php?id=4486
2016-02-19 17:31:20 +01:00
Christian Halaszovich
3392cbbd91
Emit a warning if the OutputThread fails to get realtime scheduling
...
This only applies to linux systems. Here, sched_setscheduler() is
called to get realtime scheduling. With this patch, the return value
of this function is now checked and a warning / error message is
generated if it fails.
2016-02-19 17:09:44 +01:00
Chris Spiegel
e7b211f2c0
Add TAK as a supported FFmpeg format.
2016-02-12 18:49:10 -08:00
Max Kellermann
6c5bc9b4a3
lib/expat: use C++ exceptions instead of class Error
2016-02-07 12:58:20 +01:00
Max Kellermann
cd2f65aafc
upnp/ContentDirectoryService: use AtScopeExit() for ixmlDocument_free()
...
For exception-safety.
2016-02-07 12:56:55 +01:00
Max Kellermann
3ee5093b03
lib/upnp: use C++ exceptions instead of class Error
2016-02-07 12:53:21 +01:00
Max Kellermann
6e2ad6860f
lib/upnp/ClientInit: use class ScopeLock
2016-02-07 12:53:21 +01:00
Max Kellermann
8610eb84c6
util/RuntimeError: add missing include
2016-02-07 12:53:21 +01:00
Max Kellermann
a2e008347c
Main: catch and log C++ exceptions
2016-02-07 12:42:09 +01:00
Max Kellermann
a1ef0159e3
playlist/PlaylistStream: catch and log C++ exceptions
2016-02-07 12:18:58 +01:00
Max Kellermann
1c5f76635a
playlist/SongEnumerator: wrap song in std::unique_ptr
2016-02-07 11:58:54 +01:00
Max Kellermann
e2a0fd7a28
playlist/cue/CueParser: Get() returns std::unique_ptr
2016-02-07 11:58:17 +01:00
Max Kellermann
5869a4ba2d
playlist/cue/CueParser: use std::unique_ptr
2016-02-07 08:31:51 +01:00
Max Kellermann
ac9a93261b
playlist/cue/CueParser: use C++11 initializers
2016-02-07 08:30:49 +01:00
Max Kellermann
4b79f0047d
db/DatabaseError: add exception class DatabaseError
2016-02-07 01:09:33 +01:00
Max Kellermann
6a789b660a
command/CommandError: move code to ToAck(DatabaseErrorCode)
2016-02-07 01:09:10 +01:00
Max Kellermann
0d8e44a079
db/DatabaseError: rename enum db_error and make strictly-typed
2016-02-07 01:01:10 +01:00
Max Kellermann
f097952b42
lib/upnp: use std::unique_ptr
2016-02-06 23:57:29 +01:00
Max Kellermann
224d511616
upnp/Discovery: use std::unique_ptr in WorkQueue
2016-02-06 22:26:14 +01:00
Max Kellermann
050c6cc4b0
upnp/Discovery: use AtScopeExit() for exception-safety
2016-02-06 22:06:43 +01:00
Max Kellermann
bc2d23ff0d
util/ScopeExit: new utility library
...
Similar to boost::scope_exit, but fewer include dependencies.
2016-02-06 22:03:37 +01:00
Max Kellermann
2939fadd6a
decoder/Control: use ScopeLock
2015-12-31 13:45:10 +01:00
Max Kellermann
ef260377c3
decoder/Internal: use ScopeLock
2015-12-31 13:44:19 +01:00
Max Kellermann
b9213df64b
decoder/API: use ScopeLock
2015-12-31 13:43:35 +01:00
Max Kellermann
aa7694047b
decoder/Thread: pass InputStream errors to DecoderControl::error
...
Give MPD clients access to the error condition.
2015-12-31 13:39:13 +01:00
Max Kellermann
e2bc63217a
decoder/Thread: decoder_input_stream_open() returns std::unique_ptr<InputStream>
...
Fixes memory leak after InputStream::Check() failure.
2015-12-31 13:39:13 +01:00
Max Kellermann
6c5b8bcf9d
decoder/Thread: log all errors
2015-12-31 13:38:35 +01:00
Max Kellermann
e425fe3f97
decoder/Thread: use std::unique_ptr<InputStream>
2015-12-31 13:12:28 +01:00
Max Kellermann
6507993972
decoder/Thread: move decoder_command_finished_locked() to DecoderControl
2015-12-31 13:06:31 +01:00
Max Kellermann
f081696f62
decoder/Thread: convert "int ret" to "bool success"
2015-12-31 13:02:55 +01:00
Max Kellermann
09157c3130
decoder/Thread: use ScopeLock in decoder_run_stream()
2015-12-31 13:01:49 +01:00
Max Kellermann
00626b1633
decoder/Thread: use std::unique_ptr<InputStream>
2015-12-31 13:01:03 +01:00
Max Kellermann
7e0cdbe502
decoder/Thread: use ScopeUnlock for exception-safety
2015-12-31 12:59:06 +01:00
Max Kellermann
ca08902d71
decoder/Thread: use ScopeLock in TryDecoderFile()
2015-12-31 12:58:58 +01:00
Max Kellermann
fad0e834d5
decoder/Thread: always unlock mutex before returning from TryDecoderFile()
...
Remove that surprising rule.
2015-12-31 12:57:35 +01:00
Max Kellermann
dc76eb6139
decoder/Thread: mutex not locked for decoder_run_{file,stream}()
2015-12-31 12:42:02 +01:00
Max Kellermann
55e113c7a7
decoder/Thread: document locking rules
2015-12-31 12:36:32 +01:00
Max Kellermann
b62f5e079e
decoder/Thread: use ScopeLock for exception-safety
2015-12-31 12:36:00 +01:00
Max Kellermann
ac1eaff6ec
thread/Mutex: add class ScopeUnlock()
2015-12-31 12:30:53 +01:00
Max Kellermann
45f6129ae7
player/Control: don't stop playback in Play()
...
Instead of stopping playback completely, only CANCEL the queued song
if necessary, and use the SEEK command to play the selected song.
SEEK will take care for current playback state.
2015-12-29 13:49:15 +01:00
Max Kellermann
f3503e0026
fs/DirectoryReader: use C++ exceptions instead of class Error
2015-12-29 12:56:26 +01:00
Max Kellermann
826a654c95
fs/DirectoryReader: use C++11 initializer
2015-12-29 12:56:26 +01:00
Max Kellermann
08754e6ce7
system/Error: add IsAccessDenied()
2015-12-29 12:56:26 +01:00
Max Kellermann
3843972b05
command/Error: workaround for gcc 4.x rethrow_exception(exception_ptr)
2015-12-29 12:39:28 +01:00
Max Kellermann
37862f0f20
PlaylistFile: convert more APIs from Error to std::exception
2015-12-28 14:20:37 +01:00
Max Kellermann
1f184f4aec
PlaylistFile: throw exception on spl_map_to_fs() failure
2015-12-28 14:20:37 +01:00
Max Kellermann
db5a691693
PlaylistFile: remove obsolete function TranslatePlaylistError()
2015-12-28 14:20:37 +01:00
Max Kellermann
48693250a4
command/Error: no std::exception_ptr forward declaration
...
This breaks on some standard library implementations.
2015-12-28 14:20:37 +01:00
Max Kellermann
570dcb6309
command/Error: support nested exceptions
2015-12-28 07:00:01 +01:00
Max Kellermann
19e43087a8
command/Error: move code to ToAck(std::exception_ptr)
2015-12-28 06:53:52 +01:00
Max Kellermann
fe0b6a1117
PlaylistFile: convert system_error::ENOENT to PlaylistResult::NO_SUCH_LIST
2015-12-28 06:44:01 +01:00
Max Kellermann
72851647ca
PlaylistError: fix NoSuchSong() code
2015-12-28 06:44:01 +01:00
Max Kellermann
1c90400081
command/Error: pass std::exception_ptr to PrintError()
...
Necessary to preserve type information. The try/catch sequence didn't
work previously.
2015-12-27 06:43:55 +01:00
Max Kellermann
672e18cac9
system/Error: fix duplicate strerror() call
...
Apparently, the std::system_error constructor appends strerror()
already.
2015-12-27 06:05:53 +01:00
Max Kellermann
e939d667d9
protocol/Ack: add exception class wrapping enum ack
2015-12-18 09:53:02 +01:00
Max Kellermann
8bb5a565cd
PlaylistError: add exception class wrapping enum PlaylistResult
2015-12-18 09:21:11 +01:00
Max Kellermann
7562c5751c
db/Configured: allocate ConfigBlock on the stack
2015-12-18 09:17:12 +01:00
Max Kellermann
e6e7d6dbd6
fs/io/Reader: use C++ exceptions instead of class Error
2015-12-18 01:08:16 +01:00
Max Kellermann
fe60c52c70
system/Error: add MakeErrno(), MakeLastError()
2015-12-18 01:08:16 +01:00
Max Kellermann
93f4590453
system/Error: add IsFileNotFound()
2015-12-18 00:54:23 +01:00
Max Kellermann
1098d271b8
util/Error: add bridge to std::exception
2015-12-18 00:24:43 +01:00
Max Kellermann
51168169e7
util/Tokenizer: use std::runtime_error on syntax error
2015-12-16 11:34:26 +01:00
Max Kellermann
d256a0e98f
config/ConfigFile: use std::exception on syntax error
2015-12-16 11:13:16 +01:00
Max Kellermann
6717325c3f
config/ConfigFile: use std::unique_ptr
2015-12-16 11:13:16 +01:00
Max Kellermann
c4a0571e7a
config/ConfigFile: fix typo in format string
2015-12-16 11:13:16 +01:00
Max Kellermann
e4a06da14e
fs/io/OutputStream: use C++ exceptions in Write()
2015-12-16 10:24:43 +01:00
Max Kellermann
36d6ead65c
fs/io/GzipOutputStream: use C++ exceptions in constructor
2015-12-16 10:14:56 +01:00
Max Kellermann
7eae3bc8c5
fs/io/FileOutputStream: use C++ exceptions in Commit()
2015-12-16 00:33:33 +01:00
Max Kellermann
24b2198668
fs/io/FileOutputStream: use C++ exceptions in constructor
2015-12-16 00:33:30 +01:00
Max Kellermann
d29be0f460
db/simple: use std::unique_ptr<GzipOutputStream>
2015-12-16 00:33:10 +01:00
Max Kellermann
8f93c36466
command/AllCommands: catch and report std::exception
2015-12-16 00:07:51 +01:00
Max Kellermann
3092e5a8a5
system/Error: helper library for constructing std::system_error
2015-12-16 00:07:51 +01:00
Max Kellermann
55f95b3ac9
Log: C++ exception support
2015-12-16 00:07:51 +01:00
Max Kellermann
c11345c4d9
db/DatabaseLock: add class ScopeDatabaseUnlock
2015-12-16 00:07:51 +01:00
Max Kellermann
e31f0b8b0c
db/simple: use class ScopeDatabaseLock
2015-12-16 00:07:51 +01:00
Max Kellermann
7dd3b72a8c
db/DatabaseLock: add ScopeDatabaseLock::unlock()
2015-12-16 00:07:51 +01:00
Max Kellermann
9bc0fada5c
release v0.19.12
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAABCAAGBQJWcH4fAAoJECNuiljG20USbAcQAKX0G+V10HI2Bmf7JJ3pWW96
GiOBpd66pEPioXdfpxOQNLglKS+rcproCWZnQf/VSoYN5d6pT6VLCQiMpdm3ZkNO
ZLWGhJ0Md1PGj+xjfGrMw95g+cqV+wMo1PETOsE/MtINqN/nMyQNI7lFnZ8xYEAP
DhJB1pXdchHvUVM3o+vpGSEOScn3XstL8+a/K5+Rvxptew4QDI/0ucyTLcLaaxkY
r/bH8wTDSMSpez4M5Me9MQ9OJ9NUPgudvs8Ppzji26lMcQRnZGdcffGTj08Lv+1b
gyx25t8sija6XVt6AEqn8KX+YAhe94c7ROq5PzdLeUszUf4YFIqaZ7O19PSYuuB6
APfr25A7NBQtJ88Wjw6slco+mAwbLZwQewZtFZCq6Y8J3oRBG6bpaPhFWUyygqTL
rIU735+o3FvqijKJUtKG0rAz+wfsPk6TMvIg4VMUaQXneS1LbzZe2Nz2FGxtonpd
Ua/tBQ/LnX8Utueuhy0kH06qPqq1/eSCMZIH/yphfR+B5k90h719RN/BR5xPv9Fb
vRdiSgPtfACAHvnadqcpVGjmmCQtXurC7gFceEc4Anign5kkSSGrDmo9OYhxwSkl
8A2GeOmxNrs2aFkNelnH3C6BTOEcewbXEmPQhTiBoX9LDmDK31rfSoVI0SUt7rbR
Sbt21m+7ThEqFfafZ8a/
=hDes
-----END PGP SIGNATURE-----
Merge tag 'v0.19.12'
release v0.19.12
2015-12-15 22:05:21 +01:00
Benno Fünfstück
cae2811762
fix mpd crash on invalid utf8 stream title
2015-12-15 21:49:53 +01:00
Max Kellermann
28f9a0a900
command/other: re-allow "lsinfo /"
...
This compatibility hack was accidently broken by commit f072cbbb
2015-11-13 21:04:02 +01:00
Max Kellermann
a6bb3cf60a
command/queue: use StringIsEqual() instead of memcmp()
...
memcmp() can overflow the buffer.
2015-11-13 21:02:33 +01:00
Max Kellermann
004da5d385
queue/Save: fix "Malformed playlist line in state file"
...
Regression by commit 738583e3
2015-11-13 20:45:50 +01:00
Max Kellermann
0368282486
player/Control: add code comments
2015-11-13 16:02:07 +01:00
Max Kellermann
4404f20cf4
player/Control: Seek*() returns Error information
2015-11-11 19:56:09 +01:00
Max Kellermann
faca8bc02a
decoder/Control: Seek() returns Error information
2015-11-11 19:56:08 +01:00
Max Kellermann
5e93c05095
queue/Playlist: seek methods return bool/Error instead of PlaylistResult
2015-11-11 19:56:01 +01:00
Max Kellermann
0f4f04eaa4
command/CommandError: send verbose error message to client
2015-11-11 19:51:09 +01:00
Max Kellermann
2e55d561d3
PlaylistError: remove unused code "ERRNO"
2015-11-11 19:50:57 +01:00
Max Kellermann
76a9049739
decoder/Control: State::ERROR is illegal
...
The state ERROR can only be entered during decoder initialization, and
Seek() may only be called after initialization has been finished.
2015-11-11 17:46:06 +01:00
Max Kellermann
27bfcda20d
decoder/Control: use switch/case in Seek()
2015-11-11 17:46:03 +01:00
Max Kellermann
c6d1d360a3
player/Control: use class ScopeLock
2015-11-11 17:43:56 +01:00
Max Kellermann
afc1236b06
player/Control: move code to ClearError()
2015-11-11 17:41:02 +01:00
Max Kellermann
bedd5f00f8
player/Control: move code to SeekLocked()
2015-11-11 16:56:24 +01:00
Max Kellermann
36239895bd
player/Control: add Lock prefix to locking method names
2015-11-11 16:50:57 +01:00
Max Kellermann
738583e3d4
StateFile: use StringAfterPrefix() instead of StringStartsWith()
2015-11-11 15:34:36 +01:00
Max Kellermann
c513478c31
db/simple: use StringAfterPrefix() instead of StringStartsWith()
2015-11-11 15:27:56 +01:00
Max Kellermann
a944927b56
util/StringPointer: add method empty()
2015-11-11 15:13:46 +01:00
Michael Paquier
315f9d98f6
Main: fix build failure on non-Linux systems
2015-11-10 08:38:53 +01:00
Max Kellermann
b9a8b0d146
util/StringView: add method Literal()
2015-11-06 10:03:45 +01:00
Max Kellermann
4d15db0134
util/StringCompare: use StringView to simplify inline implementations
2015-11-06 10:03:14 +01:00
Max Kellermann
0d1a54262c
playlist/soundcloud: make key_str "static const"
2015-11-06 09:52:35 +01:00
Max Kellermann
e7ef7f5159
db/update/InotifyQueue: use StringAfterPrefix()
2015-11-06 09:49:39 +01:00
Max Kellermann
3dc989bccb
input/alsa: use StringAfterPrefix()
2015-11-06 09:49:22 +01:00
Max Kellermann
75d46efd23
util/UriUtil: use StringAfterPrefix() instead of memcmp()
2015-11-06 09:49:22 +01:00
Max Kellermann
b83392cb04
util/UriUtil: move code to SkipUriScheme()
2015-11-06 09:49:22 +01:00
Max Kellermann
7640d333f4
util/UriUtil: make variables more local
2015-11-06 09:49:22 +01:00
Max Kellermann
c880099deb
util/StringCompare: add StringIsEmpty()
2015-11-06 09:37:07 +01:00
Max Kellermann
42f5ecd4a1
util/StringCompare: use strncmp() instead of memcmp() in StringStartsWith()
...
Some optimized implementations of memcmp() may not start from the
beginning of the string, and may thus segfault.
2015-11-06 09:24:18 +01:00
Max Kellermann
733989a284
util/StringUtil: move comparison functions to StringCompare.cxx
2015-11-06 09:20:18 +01:00
Max Kellermann
493f74d94d
tag/id3: convert path from "wchar_t*" to "char*" for error message
2015-11-06 09:20:18 +01:00
Max Kellermann
3b71e2abef
player/Thread: call DecoderCommand::SEEK only on existing decoder
...
If the decoder was just started, it already seeks to the desired
position.
2015-11-05 00:41:54 +01:00
Max Kellermann
30cad0c5f1
player/Thread: move code to WaitDecoderStartup()
2015-11-05 00:39:30 +01:00
Max Kellermann
3a387643b3
player/Thread: move player_command_finished() to PlayerControl
2015-11-05 00:38:09 +01:00
Max Kellermann
e6b37703da
player/Thread: copy pc.seek_time in ActivateDecoder()
...
If this gets called while seeking, do the right thing. This moves the
elapsed_time setter from method Run(), which is now redundant.
2015-11-05 00:30:04 +01:00
Max Kellermann
990f473bb3
player/Control: initialize seek_time in EnqueueSongLocked()
...
Allows removing a few special cases in the player thread.
2015-11-05 00:29:03 +01:00
Max Kellermann
cf1de78205
player/Thread: remove decoder error check from ActivateDecoder()
...
It is futile to check for decoder errors before the decoder has
finished startup. At this time, it's unlikely that the decoder has
already failed.
2015-10-28 18:24:42 +01:00
Max Kellermann
ccea6dd74b
player/Thread: rename WaitForDecoder() to ActivateDecoder()
...
.. and fix its API documentation.
2015-10-28 18:20:48 +01:00
Max Kellermann
166b490eed
player/Thread: move code to ForwardDecoderError()
2015-10-27 23:28:13 +01:00
Max Kellermann
efd871ad2f
player/Thread: clear pc.next_song earlier in WaitForDecoder()
2015-10-27 23:25:50 +01:00
Max Kellermann
b78896d64e
player/Control: use CANCEL to clear next_song in Seek()
...
Assigning nullptr to next_song may disrupt the player thread and
render undefined behavior.
2015-10-27 23:09:03 +01:00
Max Kellermann
e753c924ef
player/Thread: merge the cross_fading flag into enum CrossFadeState
2015-10-27 22:43:46 +01:00
Max Kellermann
9dc7b5a6d9
player/Thread: move ResetCrossFade() calls to where pipes are set
...
Move ResetCrossFade() to where cross-fading would actually break, to
make the cross-fading state more reliable.
2015-10-27 22:11:56 +01:00
Max Kellermann
f5d21c9cdb
player/Thread: add method ResetCrossFade()
2015-10-27 22:05:41 +01:00
Max Kellermann
6ce13646da
player/Thread: more CrossFadeState documentation
2015-10-27 21:12:20 +01:00
Max Kellermann
151653dd98
player/Thread: automatic CrossFadeState enum values
2015-10-27 21:05:10 +01:00
Max Kellermann
619cfe6a1c
player/Thread: move enum CrossFadeState into the Player class
2015-10-27 20:48:14 +01:00
Max Kellermann
8acf996d90
command/queue: add range parameter to plchanges and plchangesposid
2015-10-27 20:35:40 +01:00
Max Kellermann
15e432204e
pcm/Order: new library to convert from FLAC to ALSA channel order
...
This new library is integrated in the PcmExport class and (if enabled)
converts MPD's channel order (= FLAC channel order) to ALSA channel
order.
This fixes:
http://bugs.musicpd.org/view.php?id=3147
and
http://bugs.musicpd.org/view.php?id=3255
2015-10-27 11:44:23 +01:00
Max Kellermann
4b1630e1ec
AudioFormat: define that channel order follows the FLAC convention
...
Basic definition to solve http://bugs.musicpd.org/view.php?id=3147 and
http://bugs.musicpd.org/view.php?id=3255
2015-10-27 11:44:23 +01:00
Max Kellermann
94f850a588
release v0.19.11
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAABCAAGBQJWL0cEAAoJECNuiljG20USkHkP/0m3kFEEgqauAIbI1t0TkKOp
2ii5iHZeMAlsxGEc5SX5fFoXM6STbXq/3+OXBf+OnABh9b03o744QAAwh1ei9tiQ
kMysbN2fbpHkuchx1JfrOU1ad3qfWXQri8csTtx5eRYpgyqF7Mfl1SoY1nkpherd
j4MVq7MVqBhwCqpAfJvTFTSOlNrJ4bBcvIgGslhFYhRxMRM83KgFS//lHvbXWnOg
fjYEO34nz0rjCfz6x2r7ZQBLeQVr9n6h24iYhSTnU7Xq9o2ezWlVRIm9YVhxoZKf
/MRJuAzaHhGID8IvX7dPxdQJ+feUhQXSv8HSjOJBO6R2dqIScE3D6EIBHy8Cj9Bk
O2D1SgmR+2NnjNz2GUjCIKHm9c9jTgv+rnZ2l8hweS2oUQOPHbCtOoCNAfwyP+/Y
ms1CavNl7bUuvWrM1ipM2ZK6QfW9P4F1dtmwqtJCsqdGFyQyfACcxqmlkfxhB2vI
NyvKAOn/TlWWQscF9id3r90sEir/J9e7IJ6oZh+uvyIfOtt8wR/Jm5/H1MA7j3iX
XmNbe1GY3WHjCH2lRr3tIRKAE8I3HAtBzwhvq/miSESrkEnJ06VMatkoMRQT63gy
62yaCg+ZWiBRp07ygiedYuGL19pDOhqRjY3U/b/0EHMb9ux083nuUTssqgzzO2OP
9OPao5CPs4M4QvmiG/wF
=RdQt
-----END PGP SIGNATURE-----
Merge tag 'v0.19.11'
2015-10-27 11:05:47 +01:00
Max Kellermann
5719207dfa
gme: don't loop forever, fall back to GME's default play length
...
Fixes http://bugs.musicpd.org/view.php?id=4432
2015-10-26 17:16:20 +01:00
Max Kellermann
a84fbbe327
decoder/gme: free the gme_info_t as early as possible
2015-10-26 17:15:24 +01:00
Max Kellermann
3882c11450
decoder/gme: log the emulator type
2015-10-26 17:00:27 +01:00
Max Kellermann
08f77c2b60
decoder/gme: add option "accuracy"
2015-10-26 16:56:55 +01:00
Max Kellermann
93c97972b9
decoder/gme: call decoder_seek_error() on seek error
2015-10-26 16:32:39 +01:00
Max Kellermann
ac61d43720
output/Command: flush the mixer cache when enabling/disabling output
...
Fixes mixer lag (http://bugs.musicpd.org/view.php?id=4425 ).
2015-10-26 16:29:07 +01:00
Max Kellermann
22ebe0e58f
playlist/flac: re-add the plugin
...
This reverts commit d7d9dbd2c2
by
reimplementing it with the current MPD API.
3 years ago, I was wrong about the "embcue" plugin being able to
replace this one, because "embcue" reads a tag named "CUESHEET", while
this plugin reads the "CUESHEET" FLAC metablock. There's an important
difference between those two!
2015-10-26 13:16:01 +01:00
Max Kellermann
1958f78cc1
decoder/ffmpeg: fix crash due to wrong avio_alloc_context() call
...
Allocate the buffer dynamically using av_malloc(), and free
AVIOContext.buffer in the destructor, as mandated by the libavformat
documentation.
Fixes http://bugs.musicpd.org/view.php?id=4446
2015-10-26 13:06:29 +01:00
Max Kellermann
f072cbbba7
LocateUri: new library to classify URIs in a standard way
2015-10-22 09:39:28 +02:00
Max Kellermann
1a5b66b78d
SongLoader: move code to LoadFromDatabase()
...
Avoids the recursion in LoadFile().
2015-10-22 09:34:13 +02:00
Andreas Mair
bea5973e0c
Filter out this extra data and leading zeroes in "track" and "disc" tags.
2015-10-21 08:30:33 +02:00
Max Kellermann
0366dcf604
PlaylistPrint: fix -Wunused #ifndef ENABLE_DATABASE
2015-10-20 13:50:00 +02:00
Max Kellermann
8211d4a1c2
DetachedSong: check AllocatedPath::FromUTF8() result
2015-10-20 12:16:25 +02:00
Max Kellermann
fc2154ee92
DetachedSong: move code from Update() to LoadFile()
...
Avoid duplicate AllocatedPath::FromUTF8() invocations in two callers.
2015-10-20 12:10:42 +02:00
Max Kellermann
76f85e6f7b
command/DatabaseCommands: pass URI to handle_lsinfo2()
2015-10-20 12:07:18 +02:00
Max Kellermann
81ce684b35
command/FileCommands: fix access to absolute paths in "readcomments"
2015-10-20 11:25:46 +02:00
Max Kellermann
42bd888946
input/InputStream: remove obsolete method OverrideMimeType()
2015-10-20 11:18:35 +02:00
Max Kellermann
6bea346c41
output/httpd: use boost::intrusive::list instead of std::forward_list
2015-10-19 16:00:26 +02:00
Max Kellermann
8d23706354
util/DeleteDisposer: new utility class
2015-10-19 15:57:30 +02:00
Max Kellermann
62bfb1a273
decoder/mad: reduce memory usage while scanning tags
...
Allocate the frame pointers only when actually decoding the file.
2015-10-19 13:12:36 +02:00
Max Kellermann
38e86af75c
fs/Traits: use StringAfterPrefix() in Relative()
2015-10-19 10:56:13 +02:00
Max Kellermann
607c2c5ba2
util/StringUtil: add StringAfterPrefix()
2015-10-16 19:18:04 +02:00
Max Kellermann
85f58eb082
util/WStringUtil: fix indent
2015-10-16 19:17:54 +02:00
Max Kellermann
a7ee64a25b
decoder/mpcdec: use SampleTraits<SampleFormat::S24_P32>
...
Eliminates some duplicate code, and as a side effect, this works
around clang 3.8 compiler warning because a negative value was
shifted.
2015-10-16 18:12:32 +02:00
Max Kellermann
2a58f22649
decoder/mpcdec: use Clamp()
2015-10-16 18:11:42 +02:00
Max Kellermann
f066bb7716
unix/Daemon, playlist/...: remove unused Domain variables
2015-10-16 18:08:59 +02:00
Max Kellermann
4e3d182189
encoder/flac: fix crash with 32 bit playback
...
Copy to encoder->audio_format *after* adjusting the sample format to
S24_P32.
Fixes http://bugs.musicpd.org/view.php?id=4433
2015-10-16 18:05:34 +02:00
Max Kellermann
205fba74cf
tag/ApeLoader: fix buffer overflow after unterminated key
2015-10-16 14:55:40 +02:00
Max Kellermann
438b7b7bd0
util/ConstBuffer: add method MoveFront()
2015-10-16 09:00:36 +02:00
Max Kellermann
27a40a9843
util/StringView: add methods StripLeft(), StripRight()
2015-10-16 08:59:47 +02:00
Max Kellermann
c7b0e9b05b
lib/expat/Parser: delete the copy constructor/operator
2015-10-02 18:06:32 +02:00
Max Kellermann
356c829b76
util/StringView: new utility class
2015-09-30 22:21:46 +02:00
Anthony DeRossi
6b6c7b0920
update: apply .mpdignore matches to subdirectories
...
Wildcard matches are directly applied to all filenames in
subdirectories without any attempt at matching relative paths.
This change is based on the following feature request:
http://bugs.musicpd.org/view.php?id=3729
2015-09-30 21:50:34 +02:00
Anthony DeRossi
de332a16d1
event/ServerSocket: fix AF_UNIX address in use error
...
bind fails with an "address already in use" error if the socket path
already exists.
This was broken by cbb595ba
.
2015-09-30 21:50:34 +02:00
Anthony DeRossi
84ab3ee3af
unix/PidFile: fix empty PID file
...
This was broken by 4f29034f
.
2015-09-30 21:49:18 +02:00
Max Kellermann
ce0d896492
unix/Daemon, playlist/pls, ...: remove unused Domain variables
2015-09-17 23:15:54 +02:00
Max Kellermann
eae9cb4afe
Main: use config_domain for inotify error
2015-09-17 23:15:54 +02:00
Max Kellermann
459a812a54
notify: use "constexpr" only with glibc
...
The Mutex and Cond constructors are only "constexpr" with glibc, and
this is what this #ifdef is about.
2015-09-17 22:56:35 +02:00
François Revol
7743647460
output: add native Haiku audio output and mixer support
...
Also uses the notification system to display tags.
2015-09-17 22:46:46 +02:00
François Revol
1943b158fe
Haiku: add resources: application signature and flags
...
Since we do not handle B_QUIT_REQUESTED because the BApplication
does not Run(), use the background flag to avoid showing up in Deskbar.
2015-09-17 22:46:46 +02:00
François Revol
a36eeb5261
Haiku: add icon as resource definition file
2015-09-17 22:46:46 +02:00
François Revol
a8b00faba1
Haiku: add an HVIF icon
...
3D version reinterpreted from the official 2D design,
reusing existing Haiku icons.
Icon-O-Matic source file.
Same as data/artwork/icons/App_MusicPD in the Haiku tree as of hrev47609.
2015-09-17 22:46:46 +02:00
François Revol
bf73d0f905
notify: Don't use constexpr on Haiku
2015-09-17 22:46:46 +02:00
François Revol
193ffa06d9
system/SocketUtil: guard usage of SO_PASSCRED
...
Haiku has struct ucred but no SO_PASSCRED (yet).
2015-09-17 22:46:46 +02:00
François Revol
9d176e35d4
unix/Daemon: define WCOREDUMP() for platforms that don't support it
...
Haiku does not dump core, it just starts the debugger.
2015-09-17 22:46:46 +02:00
Will Tiffany
8461d71b52
CueParser.cxx: Append pregap to previous track
...
Only ignore indexes after first nonzero, preserving pregaps but
appending them to the previous track instead of prepending to the
current. The first index of the first track is used for the start time
regardless of its number. Unneeded bool last_updated removed.
2015-09-17 22:44:47 +02:00
Max Kellermann
e31cdf0df9
util/AllocatedString: fix off-by-one bug in Duplicate()
2015-09-01 23:33:19 +02:00
Max Kellermann
6f41791ea6
util/StringAPI: add UnsafeCopyStringP()
2015-09-01 21:16:22 +02:00
Max Kellermann
0bacbcd04e
util/StringAPI: fix include guard name
2015-09-01 21:12:16 +02:00
Max Kellermann
ffe689363f
util/AllocatedString: add constant "SENTINEL"
2015-09-01 21:11:22 +02:00
Max Kellermann
48d7fedbc0
thread/{Mutex,Cond}: remove obsolete comments
2015-08-25 12:52:13 +02:00
Max Kellermann
75dff64450
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.
2015-08-25 12:46:12 +02:00
Max Kellermann
f0b58c6f24
db/UniqueTags, tag/Set, ...: use typedef tag_mask_t
2015-08-24 11:53:30 +02:00
Max Kellermann
f3661b19c0
tag/Settings: move typedef tag_mask_t to Mask.hxx
2015-08-24 11:40:25 +02:00
Max Kellermann
2f5106c97f
tag/Settings: convert to C++
2015-08-24 11:20:45 +02:00
Max Kellermann
0c19418e84
tag/Settings: convert to bit mask
2015-08-24 11:20:45 +02:00
Max Kellermann
60c077c790
tag/Settings: add function IsTagEnabled() wrapping access to ignore_tag_items[]
2015-08-24 11:20:45 +02:00
Max Kellermann
7aaa4dda22
TagPrint: use unsigned integer
2015-08-24 11:20:45 +02:00
Max Kellermann
109b3700b5
Tag: include cleanup
2015-08-24 11:20:45 +02:00
Max Kellermann
71fecf4d1f
unix/PidFile: add missing include stdlib.h for strtoul()
2015-08-24 10:40:05 +02:00
Will Tiffany
0f75c79665
CueParser.cxx: ignore INDEX after first per track
...
Use the first INDEX in each TRACK section, instead of the last, for the
start time. This preserves the original CD layout (including gaps
between tracks), and avoids skipping sections of songs in more exotic
cuesheets (eg musical suite tracks).
Fixes 0004355 and 0003359
2015-08-23 15:49:50 +02:00
Max Kellermann
4f29034f11
unix/PidFile: use raw file descriptor instead of stdio
2015-08-15 16:42:07 +02:00
Max Kellermann
567bf445bf
unix/Daemon: move code to ReadPidFile()
2015-08-15 16:41:22 +02:00
Max Kellermann
28a0c46ca7
unix/Daemon: eliminate local variable "ret"
2015-08-15 16:41:21 +02:00
Max Kellermann
5fba8d773c
PlayerThread, ...: move to src/player/
2015-08-15 15:55:46 +02:00
Max Kellermann
36cd73df51
client, command: use StringIsEqual()
2015-08-14 19:48:30 +02:00
Max Kellermann
6f20889f00
command/CommandListBuilder: postpone "size" initialization
2015-08-14 19:42:11 +02:00
Max Kellermann
8e408725e9
protocol/Result: move current_command to class Response
2015-08-14 19:04:00 +02:00
Max Kellermann
d053797340
protocol/Result: move command_list_num to class Response
2015-08-14 19:00:02 +02:00
Max Kellermann
c8d0f947d2
protocol/Result: move error code to class Response
2015-08-14 18:57:44 +02:00
Max Kellermann
86e036c393
command: pass Response object to command callbacks
2015-08-13 12:48:31 +02:00
Max Kellermann
7652a2986b
client/Response: new Client wrapper class for writing responses
2015-08-12 08:41:05 +02:00
Max Kellermann
b1480167be
command/Request: add parser methods
...
Wrapper for protocol/ArgParser.cxx.
2015-08-11 23:02:34 +02:00
Max Kellermann
e118e958f7
protocol/ArgParser: add overload with max_value parameter
2015-08-11 22:58:04 +02:00
Max Kellermann
ee61dfe087
protocol/ArgParser: use std::numeric_limits
...
Using unsigned(-1) renders undefined behavior.
2015-08-11 22:57:47 +02:00
Max Kellermann
9231f420c1
protocol/ArgParser: overload as ParseCommandArg(), pass references
2015-08-11 22:43:10 +02:00
Max Kellermann
0f92d021a1
command/Request: new struct wrapping ConstBuffer<const char *>
2015-08-11 22:43:10 +02:00
Max Kellermann
cbdc3194cc
protocol/ArgParser: add struct RangeArg
2015-08-11 22:43:10 +02:00
Max Kellermann
993df0fd28
command/{Queue,Other}: eliminate local "bool" variable
2015-08-11 21:54:29 +02:00
Max Kellermann
84e09aa8dd
Partition: add method GetDatabase()
2015-08-06 12:45:45 +02:00
Max Kellermann
6cce3d2996
ClientWrite: merge client_write() into Client::Write()
2015-08-06 10:36:24 +02:00
Max Kellermann
77b34fa961
Client: include cleanup
2015-08-06 10:32:18 +02:00
Max Kellermann
024d978ae5
output/fifo: smaller Cancel() buffer
2015-08-06 10:15:19 +02:00
Max Kellermann
e0f55b9295
output/fifo: move the buffer into the loop
2015-08-06 10:14:53 +02:00
Max Kellermann
ccd83748f7
output/fifo: use ssize_t for the read() result
2015-08-06 10:14:35 +02:00
Max Kellermann
291ee9f86a
output/fifo: simplify the Cancel() loop
2015-08-06 10:13:21 +02:00
Max Kellermann
59e4d7f0f5
output/fifo: convert struct to class
2015-08-06 09:51:03 +02:00
Max Kellermann
4647448399
output/fifo: use AudioOutputWrapper::Open(),Close()
2015-08-06 09:50:02 +02:00
Max Kellermann
7dfe841876
output/fifo: rename Open(), Close() to OpenFifo(), CloseFifo()
2015-08-06 09:49:00 +02:00
xent
34db35c36d
playlist/embcue: fix last track
2015-08-05 23:37:57 +02:00
Max Kellermann
3e9738dc66
decoder/mpcdec: read the bit rate
...
This was lost in commit 8ead8f7ea
, because this was never implemented
for the new API.
2015-08-05 23:33:11 +02:00
Max Kellermann
2ecf57cdd9
decoder/mpcdec: use SampleTraits<SampleFormat::S24_P32>
2015-08-05 23:24:30 +02:00
Max Kellermann
c8b602038e
decoder/mpcdec: use Clamp()
2015-08-05 23:24:30 +02:00
Max Kellermann
e384fa226e
decoder/mpcdec: make buffer more local
...
Allow the compiler to invalidate buffer contents.
2015-08-05 23:10:39 +02:00
Max Kellermann
cbb595ba83
event/ServerSocket: use AllocatedSocketAddress to build local socket address
2015-07-22 11:05:48 +02:00
Max Kellermann
fdeec0307e
event/ServerSocket: use AllocatedSocketAddress for OneServerSocket::address
...
Manages memory automatically.
2015-07-22 11:05:08 +02:00
Max Kellermann
f084bbbf35
net/AllocatedSocketAddress: new sockaddr wrapper class
2015-07-22 10:56:35 +02:00
Max Kellermann
20d69b957f
Net/StaticSocketAddress: add equality operator with SocketAddress
2015-07-22 10:56:32 +02:00
Max Kellermann
7de0a621e3
net/StaticSocketAddress: replace cast operator with GetAddress()
...
The implicit cast operator can be very dangerous.
2015-07-22 10:55:57 +02:00
Max Kellermann
3441ea9844
net/ToString: relicense to BSD-2
2015-07-22 10:26:18 +02:00
Max Kellermann
83752e9349
net/ToString: rename sockaddr_to_string() to ToString()
2015-07-22 10:26:18 +02:00
Max Kellermann
8fdfe85b5f
net/ToString: move V4 mapping code to functions
2015-07-22 10:26:18 +02:00
Max Kellermann
d4d9a85ad8
net/ToString: make variables more local
2015-07-22 10:26:18 +02:00
Max Kellermann
6f22452b54
net/Resolver: move sockaddr_to_string() to ToString.cxx
2015-07-22 10:03:36 +02:00
Max Kellermann
a4a37d7a19
net/StaticSocketAddress: remove unused method SetLocal()
2015-07-21 14:42:46 +02:00
Max Kellermann
d1b1a8e490
net/StaticSocketAddress: include cleanup
2015-07-21 13:56:21 +02:00
Max Kellermann
104fe124df
net/StaticSocketAddress: disable SetLocal() on Android
...
Fixes build failure because Bionic doesn't provide SUN_LEN().
2015-07-21 12:08:25 +02:00
Max Kellermann
5bdbd74d59
net: add header Features.hxx
...
For improved portability of the net library to projects without
autoconf.
2015-07-21 11:57:53 +02:00
Max Kellermann
e621c24270
net/StaticSocketAddress: include config.h
2015-07-21 11:57:53 +02:00
Max Kellermann
554888318a
net/StaticSocketAddress: use SocketAddress::size_type
2015-07-21 10:39:50 +02:00
Max Kellermann
49aaf98a7f
net/StaticSocketAddress: include cleanup
2015-07-21 10:38:58 +02:00
Max Kellermann
6f7bfa71a9
lib/icu/Collate: remove GLib implementation
...
There is not much use in GLib: on Windows, we have a native API for
string collation, and the rest uses either libicu or the standard C
library calls.
2015-06-27 16:05:54 +02:00
Max Kellermann
fb3564fbe7
lib/icu/Collate: use LCMapStringEx() on Windows
2015-06-27 15:52:37 +02:00
Max Kellermann
3fa4dad418
lib/icu/Converter: remove GLib implementation
...
We don't need this anymore: Win32 doesn't use this library at all, and
everything else has either iconv() or libicu.
2015-06-26 16:51:18 +02:00
Max Kellermann
0756607e32
lib/icu/Converter: add iconv() implementation
2015-06-26 16:49:25 +02:00
Max Kellermann
a03be5a8a6
lib/icu/Converter: add missing <>
2015-06-26 16:49:25 +02:00
Max Kellermann
39c5bb95d2
CommandLine: show more compile-time features in --version
2015-06-26 16:42:06 +02:00
Max Kellermann
4d33b089da
CommandLine: update copyright year
2015-06-26 16:32:52 +02:00
Max Kellermann
58996b841a
config/Global: allow calling config_get_string() with one argument
...
default_value defaults to nullptr.
2015-06-26 08:06:40 +02:00
Max Kellermann
df03a7b3f8
config/Templates: mark http_proxy_* deprecated
2015-06-26 08:06:40 +02:00
Max Kellermann
ac03871174
Main: remove g_set_application_name() call
...
Since we are removing GLib, this call is useless.
2015-06-26 07:59:58 +02:00
Max Kellermann
2a086d20c6
fs/Glob: remove GLib implementation
...
I suppose there is no non-WIN32 operating system that doesn't have
fnmatch(). So let's remove the GLib implementation.
2015-06-26 07:56:34 +02:00
Max Kellermann
d5cfa6d4dc
TagId3: remove the "id3v1_encoding" setting
...
Drop support for misencoded tags. People should not be using ID3v1
anyway.
2015-06-26 00:15:24 +02:00
Max Kellermann
f415167e59
config/Templates: add attribute "deprecated"
2015-06-26 00:11:33 +02:00
Max Kellermann
9477db2363
config/Templates: add constructor with defaulted "repeat" parameter
2015-06-26 00:11:23 +02:00
Max Kellermann
8d11577ff2
lib/icu/{Converter,Collate}: return AllocatedString
2015-06-25 23:44:16 +02:00
Max Kellermann
037d1d9ad1
util/AllocatedString: add methods Duplicate(), Clone()
2015-06-25 23:44:16 +02:00
Max Kellermann
619ef2b341
util/AllocatedString: add method empty()
2015-06-25 23:44:16 +02:00
Max Kellermann
f06fe76d35
SongFilter: add assertion to StringMatch()
2015-06-25 23:29:07 +02:00
Max Kellermann
eb86fdfbea
SongFilter: return "const char *" instead of std::string
2015-06-25 23:15:36 +02:00
Max Kellermann
c7712e2ef0
lib/icu/Collate: fall back to strxfrm()
2015-06-25 23:01:29 +02:00
Max Kellermann
61fa770644
lib/icu/Collate: fix indent
2015-06-25 22:55:57 +02:00
Max Kellermann
334bd73792
lib/icu/Collate: fall back to strcoll() instead of strcasecmp()
2015-06-23 13:26:45 +02:00
Max Kellermann
090ce262c4
lib/icu/Collate: use CompareStringEx() on Windows
2015-06-23 13:20:41 +02:00
Max Kellermann
d551d40886
fs/NarrowPath: use the WideCharToMultiByte() wrapper
2015-06-23 13:20:11 +02:00
Max Kellermann
aecfcaa8a2
lib/icu/Win32: wrappers for WideCharToMultiByte(), MultiByteToWideChar()
2015-06-23 13:20:11 +02:00
Max Kellermann
61a3028788
util/AllocatedString: remove bogus code from operator=
2015-06-23 13:20:11 +02:00
Max Kellermann
11d048b8e3
util/AllocatedString: new utility class
2015-06-23 12:48:21 +02:00
Max Kellermann
d814a01f2a
fs/Path: include cleanup
2015-06-23 12:35:13 +02:00
Max Kellermann
4c0916df79
fs/Path: use base class StringPointer
2015-06-23 12:34:45 +02:00
Max Kellermann
e4844b9936
util/StringPointer: new utility class
2015-06-23 12:34:44 +02:00
Max Kellermann
60aa8c527b
fs/Path: use method c_str() internally
2015-06-23 12:34:43 +02:00
Max Kellermann
9f7c3b8ea6
fs/Config: remove charset auto-detection via GLib
...
The default is always UTF-8.
2015-06-22 22:35:54 +02:00
Max Kellermann
9f4f1bab39
LogBackend: remove character set support
...
Always write UTF-8 to the log file.
2015-06-22 22:33:37 +02:00
Max Kellermann
73bd6af0f9
fs/Charset: hard-code Windows to ACP
...
Don't define HAVE_FS_CHARSET, and make GetFSCharset() return "ACP"
instead of "UTF-8". Ignore the configuration setting, which had no
effect anyway.
2015-06-22 22:20:10 +02:00
Max Kellermann
2aa54c5365
fs/Glob: use PathMatchSpec() on Windows
2015-06-22 22:12:08 +02:00
Max Kellermann
bc8542503d
fs/Glob: use fnmatch() if available
2015-06-22 22:12:08 +02:00
Max Kellermann
a6aea4ba58
fs/Glob: make constructor "explicit"
2015-06-22 22:12:08 +02:00
Max Kellermann
0b41faec89
db/update/ExcludeList: remove obsolete TODO comments
2015-06-22 22:12:08 +02:00
Max Kellermann
50eac9b49e
db/update/ExcludeList: move class Pattern to fs/Glob.hxx
2015-06-22 22:12:08 +02:00
Max Kellermann
b4fc2e38ab
pcm/Interleave: add stereo optimization
2015-06-22 17:27:29 +02:00
Max Kellermann
16639f9d71
pcm/Interleave: instantiate a 16 bit optimization
2015-06-22 17:20:37 +02:00
Max Kellermann
22f2605e25
pcm/Interleave: convert PcmInterleave32() to template
2015-06-22 17:19:42 +02:00
Max Kellermann
69476b4f21
pcm/Interleave: add optimization for 32 bit samples
...
Move code from the "vorbis" decoder.
2015-06-22 16:32:06 +02:00
Max Kellermann
fdf92c5f3b
pcm/Interleave: add "restrict" keywords
2015-06-22 16:32:06 +02:00
Max Kellermann
eed1a3c239
decoder/ffmpeg: move code to pcm/Interleave.cxx
2015-06-22 14:42:19 +02:00
Max Kellermann
94c037821b
decoder/ffmpeg: check for commands earlier
...
Improve initial seek by not reading/decoding the first frame before
checking for the seek command.
2015-06-22 14:42:19 +02:00
Max Kellermann
e38e8eb636
decoder/vorbis: check STOP before entering the loop
2015-06-22 14:40:51 +02:00
Max Kellermann
bef8c83388
OutputThread: move code to CloseOutput()
2015-06-22 13:02:13 +02:00
Max Kellermann
2e98324486
lib/ffmpeg/Buffer: add "malloc" attribute
2015-06-22 09:11:22 +02:00
Thomas Guillem
6e2d7445c5
InputStream: add ReadFull method
...
Convenient method that behave differently than Read, and that will be used by
tag scanners.
This method will return in case of error, if the whole data is read or is EOF
is reached.
2015-06-22 08:51:14 +02:00
Max Kellermann
90e7ace980
release v0.19.10
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAABCAAGBQJVhsF2AAoJECNuiljG20US2OUQAIyDcaUCFgUa2CYa7MftCPGc
dYJFwf+6Y2fJdSXcogYZmXNKNjFbPAZ4qqGdoNfI5a0rLxMarmL4DyjziAWi3ETB
MOkZK65Y5ySyyw69e+i/XsOwOn8rm6jDuwHKpT7wVJNjvZ8nA8esvu5b1Ief5LBd
UwEmn5DtKjA7dErHEYd2YvMK0xm+YmoKXuhmJKAn3sQdCEldgH4T5BCdOqmfrHWX
BYmNxmP3PU9Tqi7XHTSFZJn6vWiXhOoWr4Cb7K54j49sRV2B4QMWX1CLyK4+Jwmk
NZwD1IoGtoks5twfMTA9F9dBV/CPAWT69E0LIvaFJwCyoPCEnEi6k41bRAWK7P65
QwKxdtY/GZnVFpiqXba+wkD6VBa5wmkjS10+cIBhz3CVCEE+N5YacubUw5JieYg3
kOG2htSF1YP/Mo+IAObO9doQWHnDUavVhhpQ8UyqQ1bDMsmaEpfE16TRmlY/l5wx
Aor2p6D3c0E0IGpEwjOl6T9pDql4dyTdrRLLXJ6oD9iYv2rDdahctBRdyFZ1mRwX
oNUz8bfGDrshHVvwjQTr2b4O+w+yc+RSuJcyCGGcn5LakBuiM6vYNYuZzq3Yj/RK
Wk7RErVsbtY4ZRH06Lf5MSM5TflnrfQmzkUB0rZ0XoDyweoHOHPyzKhvBaKhadNh
UnEx4kCOvWdjFXUVWH3Q
=MrVf
-----END PGP SIGNATURE-----
Merge tag 'v0.19.10'
2015-06-21 16:06:02 +02:00
Max Kellermann
06301e279c
PlayerThread: start the decoder on PlayerCommand::QUEUE
...
Fixes missing SongBorder() call, which causes "single" mode breakage.
2015-06-21 15:38:48 +02:00
Max Kellermann
6d6f274648
DecoderAPI: discard unused song tag early
...
If there's a stream tag, don't let the song tag override it in the
next update_stream_tag() call.
2015-06-21 15:10:55 +02:00
Max Kellermann
9acefcb256
DecoderThread: set Decoder::song_tag only for local files
...
If the song tag comes from a stream, and MPD playback restarts, MPD
would believe the tag should override the newly received tag. This
makes the previous tag appear stuck. This change passes the song tag
only if it's authoritative - i.e. if it's a song file.
2015-06-21 15:02:14 +02:00
Max Kellermann
e4d0293a31
DecoderAPI: "move" the Tag object
...
Reduce runtime overhead.
2015-06-20 16:06:09 +02:00
Romain Rollet
ae77542a11
OutputControl: fix fail_timer check right after booting
...
Right after booting, the monotonic clock starts with a very small
value, and AudioOutput::LockUpdate() may believe that the fail_timer
has not recovered yet.
2015-06-20 15:37:19 +02:00
Max Kellermann
980187f856
system/PeriodClock: make IsDefined() "constexpr"
2015-06-20 15:33:17 +02:00
Max Kellermann
2b0a127fa5
pcm/soxr: fix recipe parser
2015-06-20 15:25:00 +02:00
Max Kellermann
327a8e6c59
decoder/ffmpeg: skip unwanted samples after seeking
...
When seeking to the beginning of a packet, skip the samples that come
before the desired time stamp.
2015-06-20 15:01:05 +02:00
Max Kellermann
d11e2724c4
decoder/ffmpeg: use AVSEEK_FLAG_BACKWARD for seeking
...
Ask FFmpeg to seek to the next packet boundary *before* the seek
position, so we don't miss audio data. Now we get too much, but we'll
solve that in the next commit.
2015-06-20 14:29:42 +02:00
Max Kellermann
f768ca3a2d
decoder/ffmpeg: move code to StreamRelativePts()
2015-06-19 18:56:29 +02:00
Max Kellermann
947e902288
input/curl: trigger the condition variable in RequestDone()
...
Fixes deadlock on small responses.
2015-06-19 16:45:38 +02:00
Thomas Guillem
3436a646b5
storage/nfs: fix deadlock when connecting
...
The Connect method can be called between Schedule and lock. In that case, when
locked, the state is already set to CONNECTING of READY and the condition won't
be signaled anymore.
2015-05-29 22:39:14 +02:00
jai
aed0af1e00
input/smbclient: fix DFF playback
2015-05-29 22:37:49 +02:00
Michal Nazarewicz
0d7ee2b014
OpusEncoderPlugin: initialise granulepos so we end up with sane values
...
Not initialising granulepos leads to it having arbitrary values in the
encoded stream including possibly negative values which are not valid
and confuse opusdec. Explicitly initialise opus_encoder::granulepos
to avoid that problem.
2015-03-25 18:02:54 +01:00
Max Kellermann
cd1148c6aa
db/update/ExcludeList: use the NarrowPath class
2015-03-25 17:32:17 +01:00
Max Kellermann
cfd26f53f0
fs/io/FileOutputStream: fix wrong #ifdef WIN32
2015-03-25 17:28:27 +01:00
Max Kellermann
69ad5671ed
Playlist*: use the BufferedOutputStream API instead of FILE*
2015-03-24 22:03:20 +01:00
Max Kellermann
f9e0f0d257
PlaylistSave: return bool/Error instead of PlaylistResult
2015-03-24 22:03:17 +01:00
Max Kellermann
98f3135ad3
PlaylistFile: export spl_map_to_fs() and TranslatePlaylistError()
2015-03-24 22:03:17 +01:00
Max Kellermann
8c9c3a91e6
PlaylistFile: eliminate redundant spl_map() calls
2015-03-24 22:03:17 +01:00
Max Kellermann
7f3518333d
Mapper: don't use C-style prototypes
2015-03-24 22:03:17 +01:00
Max Kellermann
f1f871f103
fs/io/FileOutputStream: add method Tell()
2015-03-24 22:00:10 +01:00
Max Kellermann
6387b52896
fs/io/FileOutputStream: seek end-of-file in AppendFileOutputStream ctor
2015-03-24 21:59:34 +01:00
Max Kellermann
077e95da85
system/FileDescriptor: add method Tell()
2015-03-24 21:59:34 +01:00
Max Kellermann
7f6e1fbc8d
fs/io/FileOutputStream: add class AppendFileOutputStream
2015-03-23 22:51:33 +01:00
Max Kellermann
06827cfcf1
fs/io/FileOutputStream: move code to new class BaseFileOutputStream
2015-03-23 22:36:03 +01:00
Max Kellermann
6dc3097998
fs/io/FileOutputStream: make "path" const
2015-03-23 22:35:56 +01:00
Max Kellermann
cd35271698
fs/io/BufferedOutputStream: add code comments
2015-03-23 22:03:25 +01:00
Max Kellermann
7b575f61d0
Main: notify systemd when MPD is ready
2015-03-21 14:27:54 +01:00
Max Kellermann
b31d171ae8
*: doxygen fixups
2015-03-17 11:21:43 +01:00
Max Kellermann
65ff72cdf8
fs/Traits: enable _UNICODE on Windows
...
Use wchar_t for everything on Windows. Solves a lot of filesystem
charset problems.
2015-03-05 10:15:10 +01:00
Max Kellermann
1da0956331
output/recorder: convert path to UTF-8 for logging
2015-03-05 10:15:10 +01:00
Max Kellermann
983078992d
fs/NarrowPath: new utility class
2015-03-05 10:07:07 +01:00
Max Kellermann
81059f80d8
output/winmm: convert device name to filesystem charset
2015-03-05 10:07:07 +01:00
Max Kellermann
a261442279
output/winmm: eliminate "goto"
2015-03-05 10:07:07 +01:00
Max Kellermann
2f41eba100
fs/Path: reimplement GetSuffix() using GetBase() and StringFindLast()
2015-03-05 10:07:07 +01:00
Max Kellermann
91a6fb81c1
PlaylistStream: convert suffix to UTF-8
2015-03-05 10:07:07 +01:00
Max Kellermann
c95f0820bc
TagFile: convert suffix to UTF-8
2015-03-05 10:07:07 +01:00
Max Kellermann
830a1bd130
fs/File{System,Info}: fix regular file check
...
Don't use FILE_ATTRIBUTE_NORMAL, it's a "magic" value for something
else. To check if a file is a regular file, we need to check if it's
NOT a directory (or a device).
2015-03-05 10:07:07 +01:00
Max Kellermann
5c5ea8a254
fs/Path: use the "const_pointer" typedef
2015-03-05 10:07:07 +01:00
Max Kellermann
5222c684d3
event/ServerSocket: #ifdef out local socket support on Windows
2015-03-05 10:07:07 +01:00
Max Kellermann
5798faa13b
util/StringUtil: add wchar_t overloads
2015-03-05 10:06:56 +01:00
Max Kellermann
a062693875
util/StringAPI: add wchar_t overloads
2015-03-05 08:58:04 +01:00
Max Kellermann
6887d5d347
fs/Traits: use TCHAR on Windows
2015-03-05 08:58:04 +01:00
Max Kellermann
39c9669445
fs/Traits: add macro PATH_LITERAL()
2015-03-05 08:58:04 +01:00
Max Kellermann
44565e22a0
fs/Traits: use string.h API wrappers
2015-03-05 08:58:04 +01:00
Max Kellermann
ddec10d494
input/Open: convert UTF-8 to filesystem charset for OpenLocalInputStream()
2015-03-05 08:51:01 +01:00
Max Kellermann
758e969cb6
input/Open: use PathTraitsUTF8 to check UTF-8 path
2015-03-05 08:40:34 +01:00
Max Kellermann
a9a6a5041b
db/Configured: convert path to UTF-8 before injecting into configuration
2015-03-05 08:38:50 +01:00
Max Kellermann
59dd8ffbc6
PlaylistFile: use Path::ToUTF8() instead of PathToUTF8()
2015-03-05 08:37:00 +01:00
Max Kellermann
8f9fe1b11a
PlaylistFile: don't insert "file://" before absolute paths
...
This prefix is deprecated.
2015-03-05 08:36:17 +01:00
Max Kellermann
9ed0152cf2
unix/PidFile: use the UTF-8 path for error message
2015-03-05 08:09:08 +01:00
Max Kellermann
250332a8d5
util/StringUtil: reorder functions
2015-03-04 20:22:05 +01:00
Max Kellermann
39825c6622
util/ASCII: strip include guard
2015-03-04 20:05:39 +01:00
Max Kellermann
cee3070ca4
output/winmm: use StringStartsWith() instead of strstr()
2015-03-04 08:58:59 +01:00
Max Kellermann
cd08e5c7da
fs/io/FileOutputStream: use class FileDescriptor
2015-03-03 23:04:25 +01:00
Max Kellermann
dd4beea44c
system/FileDescriptor: Close() returns bool
2015-03-03 23:04:25 +01:00
Max Kellermann
5b48d59769
system/FileDescriptor: add "mode" parameter to Open()
2015-03-03 22:29:09 +01:00
Max Kellermann
4dec12fcfc
system/FileDescriptor: move O_NOCTTY|O_CLOEXEC to Open()
2015-03-03 22:20:51 +01:00
Max Kellermann
57ad3aca8e
input/file: use class FileReader
2015-03-03 21:48:45 +01:00
Max Kellermann
f677f42be7
system/FileDescriptor: remove bogus assertions
2015-03-03 21:48:45 +01:00
Max Kellermann
a5760670ef
fs/io/FileReader: add method GetFileInfo()
2015-03-03 21:41:11 +01:00
Max Kellermann
f04a3ec201
fs/io/FileReader: add move constructor
2015-03-03 21:41:10 +01:00
Max Kellermann
f402c5fe3c
input/file: pass UTF-8 URI to InputStream ctor
2015-03-03 21:17:56 +01:00
Max Kellermann
9352e25392
input/file: add missing fcntl.h include for posix_fadvise()
2015-03-03 21:17:47 +01:00
Max Kellermann
1c90b0c19d
*: change C-style prototypes, drop "(void)"
2015-03-03 20:05:08 +01:00
Max Kellermann
cd776ff1a8
system/FileDescriptor: fix WIN32 checks
2015-03-03 19:44:32 +01:00
Max Kellermann
40a587bbaf
system/FileDescriptor: new wrapper class for a file descriptor
2015-03-03 17:14:30 +01:00
Max Kellermann
818d729d8b
system/fd_util: remove unused functions
2015-03-03 17:07:52 +01:00
Max Kellermann
dd5daa0767
fs/io/FileReader: add method Seek()
2015-03-03 14:29:36 +01:00
Max Kellermann
ef5090c397
db/update/Container: convert vtrack name to FS charset
2015-03-03 13:20:43 +01:00
Max Kellermann
cf073de36c
storage/local: convert mangled URI to FS charset
2015-03-03 13:18:15 +01:00
Max Kellermann
f16054639b
storage/local: use PathTraitsFS typedefs
2015-03-03 13:12:54 +01:00
Max Kellermann
b0983e8708
fs/Traits: add Find()
2015-03-03 12:44:07 +01:00
Max Kellermann
0febb218ed
FileCommands: use Path::HasNewline()
2015-03-03 12:42:27 +01:00
Max Kellermann
dfcfeeb550
fs/Traits: use std::char_traits
2015-03-03 12:28:47 +01:00
Max Kellermann
820debf45a
util/StringUtil: add FindStringSuffix()
2015-03-03 11:29:31 +01:00
Max Kellermann
c19292c036
Util/StringUtil: use std::copy_n()
2015-03-02 22:35:59 +01:00
Max Kellermann
4ee81e6a3d
PlaylistFile: limit variable scope
2015-03-02 22:19:47 +01:00
Max Kellermann
87a8a3e22f
PlaylistFile: move memchr() call to class Path
2015-03-02 21:48:37 +01:00
Max Kellermann
e9125ef8e4
PlaylistFile: use PathTraitsFS typedefs
2015-03-02 21:47:33 +01:00
Max Kellermann
6ff394bcc9
StorageCommands: use PathTraitsUTF8 for protocol argument
2015-03-02 21:25:55 +01:00
Max Kellermann
7ce96585f5
fs/Path: add method GetSuffix()
...
Type-safe wrapper for uri_get_suffix().
2015-03-01 01:09:53 +01:00
Max Kellermann
41cc31c124
SongUpdate: use OpenArchiveInputStream() to open archive file
...
Don't pass Path::c_str() to tag_stream_scan() which requires a UTF-8
string.
2015-03-01 00:48:44 +01:00
Max Kellermann
605af61a0f
db/simple: eliminate UpdateFileInArchive() if archive API is disabled
...
Reduce some unnecessary overhead.
2015-03-01 00:25:30 +01:00
Max Kellermann
77e163e5b8
Mapper: use Path::IsAbsolute()
2015-02-28 23:50:18 +01:00
Max Kellermann
0e00b9009d
fs/Path: pass Path to Relative()
2015-02-28 23:45:16 +01:00
Max Kellermann
a6dd998d31
fs/AllocatedPath: use PathTraitsFS::Relative()
...
Eliminate duplicate code.
2015-02-28 23:30:53 +01:00
Max Kellermann
cdd0ccc67a
fs/Path: rename RelativeFS() to Relative()
2015-02-28 23:19:34 +01:00